terça-feira, 20 de setembro de 2016

Resolvendo o problema da haste regulável do aspirador de pó

Recentemente tive um problema com a haste do aspirador, ela deixou de travar. O jeito que resolví foi usando grafite em pó, o mesmo que usa para lubrificar fechadura, etc. Não usem óleos nessas coisas, pois vai grudar muito pó.

sexta-feira, 12 de agosto de 2016

Putting hypergeometric function in gnuplot with GSL (patching)

My gnuplot version with hypergeometric function using GNU Scientific Library
hyperg_2F1.patch

--- ./src/eval.c.orig    2016-08-12 17:06:35.250145505 -0300
+++ ./src/eval.c    2016-05-03 12:34:08.000000000 -0300
@@ -191,6 +191,7 @@
     {"lambertw",  f_lambertw}, /* HBB, from G.Kuhnle 20001107 */
     {"airy",  f_airy},         /* janert, 20090905 */
     {"expint",  f_expint},     /* Jim Van Zandt, 20101010 */
+    {"hyperg_2F1",f_hyperg_2F1},

 #ifdef HAVE_LIBCERF
     {"cerf", f_cerf},        /* complex error function */
--- ./src/specfun.c.orig    2016-08-12 17:06:35.248145450 -0300
+++ ./src/specfun.c    2016-05-03 12:20:14.000000000 -0300
@@ -49,6 +49,7 @@
 #include "specfun.h"
 #include "stdfn.h"
 #include "util.h"
+#include "gsl/gsl_sf_hyperg.h"

 #define ITMAX   200

@@ -3031,9 +3032,11 @@
 extern double p1evl ( double, void *, int );
 extern double sin ( double );
 extern double cos ( double );
+extern double gsl_sf_hyperg_2F1( double , double, double, double);
 #else
 double fabs(), exp(), sqrt();
 double polevl(), p1evl(), sin(), cos();
+double gsl_sf_hyperg_2F1();
 #endif

 int
--- ./src/standard.c.orig    2016-08-12 17:06:35.255145644 -0300
+++ ./src/standard.c    2016-05-03 14:40:24.741731493 -0300
@@ -39,6 +39,7 @@
 #include "gadgets.h"        /* for 'ang2rad' and 'zero' */
 #include "gp_time.h"        /* needed by f_tmsec() and friendsa */
 #include "util.h"        /* for int_error() */
+#include "gsl/gsl_sf_hyperg.h"

 static double carlson_elliptic_rc(double x,double y);
 static double carlson_elliptic_rf(double x,double y,double z);
@@ -57,7 +58,7 @@
 static double yone __PROTO((double x));
 static double rj1 __PROTO((double x));
 static double ry1 __PROTO((double x));
-
+extern double gsl_sf_hyperg_2F1(double,double,double,double);
 /* The bessel function approximations here are from
  * "Computer Approximations"
  * by Hart, Cheney et al.
@@ -841,6 +842,30 @@
     }
 }

+void
+f_hyperg_2F1(union argument *arg)
+{
+    struct value a1;
+    double    aa,bb,cc,zz;
+
+    (void) arg;            /* avoid -Wunused warning */
+    zz=real(pop(&a1));
+    cc=real(pop(&a1));
+    bb=real(pop(&a1));
+    aa=real(pop(&a1));
+//    if (fabs(imag(&a1)) > zero || fabs(imag(&a2)) > zero)
+//    int_error(NO_CARET, "can only do elliptic integrals of reals");
+
+    if (zz < 1.0 && zz > 0)
+    push(Gcomplex(&a1, gsl_sf_hyperg_2F1(aa,bb,cc,zz), 0.0));
+    else if (zz < 0) {
+    push(Gcomplex(&a1, pow(1-zz,-aa)*gsl_sf_hyperg_2F1(aa,cc-bb,cc,zz/(zz-1)), 0.0));
+    } else {
+    undefined=TRUE;
+    push(&a1);
+    }
+
+}
 /* Terminate the autoconversion from string to numeric values */
 #undef pop

--- ./src/standard.h.orig    2016-08-12 17:06:35.252145560 -0300
+++ ./src/standard.h    2016-05-03 12:37:23.000000000 -0300
@@ -93,5 +93,6 @@
 void f_tmyear __PROTO((union argument *x));
 void f_tmwday __PROTO((union argument *x));
 void f_tmyday __PROTO((union argument *x));
+void f_hyperg_2F1 __PROTO((union argument *x));

 #endif /* GNUPLOT_STANDARD_H */

sexta-feira, 5 de agosto de 2016

Edamame soja verde cozida ainda na vajem

A soja não é ruim, a proteina texturizada de soja que é horrivel. A forma gostosa de comer seria ela ainda verde, cozida na água com sal. Quase como se faz com o amendoin cru na casca muito comum na Bahia.
Mas é muito mais fácil para comer a soja, que é só precionar com os dedos a vagem da soja próximo a boca que os grãos voam. hehehe

As primeiras cervejas que fiz

junho de 2012
+/-Pilsen  08/2012
Primeira cerveja, receita Pilsen só que fermentada a frio com fermento Ale, a foto ao lado esquerdo depois da fermentação. Como não sabia ainda carbonatar direito, nem tinha tampador, esterilizei as garrafas como fazia com as conservas. Reutilizei as tampas que não estavam tortas e fechei com alicate, improvisação total. Ficou muito muito boa para uma primeira cerveja. Resultado final à direita. Depois vieram as IPAs, todas ainda sujas, aprendendo a clarificar ainda. Não fiz nenhum curso, só lendo material na internet. Errando que se aprende. Todas fermentadas a frio, coisas que está virando moda atualmente, as caracteristicas obtidas pelo malte e lúpulo sem muita interferências do fermento.
Primeira IPA 10/2012
Segunda IPA 12/2012
Todas com um excesso de carbonatação, parece até chantilly hahaha.



Essa usei malte melanoidina, essa é a foto melhor que tenho dela, depois que envelheci e todo aquele fermento decantou no fundo e não sujou. Foto de Maio de 2013. Em abril ainda estava suja.



sexta-feira, 3 de junho de 2016

Homebrew Calc v.3 (SG, SRM, IBU, alcohol, CO2)


Potential SG and SRM beer color
 
Volume: liter          Efficiency: %
QT(kg) Malte Pot.SG SRM %mass
                                                                       
SG: g/cm³       Brix: %       SRM: °L


Brix: SG: g/cm³     Real Efficiency: %

IBU (International Biterness Unit)
QT(g) Hops Alfa(%) T(min) IBU
                Total:      


Calculate Alcohol
Select Yeast
  Attenuation:%
Estimate Final SG:g/cm³
Final Brix:%
  Final SG:g/cm³   ABW:%   ABV:%


Calculate Carbonation Pressure/Priming Sugar
Typical CO2 (in volumes)
Volumes CO2:   Temperature:
  Pressure:kgf/cm²
Final Volume:liter
  Table Sugar:g  or Corn Sugar:g

Com essa calculadora você poderá estimar quanto brix e a cor da cerveja vai obter, estimar também a amargura, calcular o grau alcoólico usando apenas o refratômetro em brix, e por fim, a pressão de carbonatação. O refratômetro é bem mais fácil de se usar e não desperdiça a sua breja, pois só precisa de algumas gotas.
Lembrar que é apenas uma estimação, se precisar de valores exatos vai precisar mandar para algum laboratório especializado.

Como usar:
  1. Coloque o volume que deseja produzir, e a eficiencia que acha que vai obter, coloque a quantidade de malte e selecione o malte, poderá modificar os valores se achar que estiverem errados, (Clique em Add para por mais linhas/ Remove para tirar linhas) ponha quantos maltes que desejar e por fim calculate, assim terá uma estimativa do SG/Brix/Cor do seu mosto.
  2. Ponha o valor do Brix/SG que obteve e veja qual foi a eficiencia real.
  3. Coloque a quantidade do lúpulo e selecione o lúpulo, se o valor do ácido alfa estiver errado, o corrija, ponha o tempo. Se tiver mais lúpulo, clique em Add, e clique em Remove para tirar. Clique  em Calculate IBU para obter uma estimativa da amargura.
  4. Depois de fermentado poderá por o Brix final e calcular o alcool da sua cerveja. Se quiser só usar a calculadora do álcool, basta por o valor do Brix : e Final Brix:
  5. Carbonatação: Calcula a pressão de carbonatação para o estilo de cerveja que esteja preparando, não está interligado com as demais calculadoras. Coloque a temperatura que vai carbonatar e escolha o estilo, se quiser mude o volume de CO2. Para o priming com açúcar coloque o volume final e calcule.
Algumas coisas estão interligados, no cálculo da amargura, vai precisar do Volume e o SG obtido, no cáculo do álcool precisa Brix obtido e o Brix final.

Usei os dados do mate e do lúpulo extraidos do  EZ Brew 1.95 e de vários sites, andei modificando alguns valores que achei muito baixos, e as formulas para estimar grau alcoolico do site:
http://www.primetab.com/formulas.html
Para o primiming usei a formula do artigo: http://www.homebrewersassociation.org/attachments/0000/2497/Math_in_Mash_SummerZym95.pdf
A formula do cálculo da amargura é a mesma que postei no post anterior.
A formula do cálculo da pressão é a mesma que postei no post anterior que calcula o volume de CO2, só que a modifiquei para calcular a pressão a partir da temperatura e volume do estilo desejado.

sexta-feira, 29 de abril de 2016

Patch for qtiplot 0.9.8.9 ImageWidget error

icons/../src/plot2D/ImageWidget.h:73:7: error: 'virtual void ImageWidget::paintEvent(QPaintEvent*)' is private
  void paintEvent(QPaintEvent *e);

patch link qwidget.patch


quinta-feira, 17 de dezembro de 2015

QuTip 3.2.0.dev-7712129 (Slackware64-current 20151217)

QuTiP: Quantum Toolbox in Python
Copyright (c) 2011 and later.
Paul D. Nation & Robert J. Johansson

QuTiP Version:      3.2.0.dev-7712129
Numpy Version:      1.10.1
Scipy Version:      0.16.1
Cython Version:     0.23.4
Matplotlib Version: 1.5.0
Fortran mcsolver:   True
scikits.umfpack:    True
Python Version:     2.7.11
Number of CPUs:     4
Platform Info:      Linux (x86_64)


Ran 455 tests in 426.107s
 

https://drive.google.com/file/d/0Bz0A3IDwzSRjZlNFWEVtdTZzNHM/view?usp=sharing

20fb4149f324e78b91881cbce302c3f9  Cython-0.23.4-x86_64-1_SBo.txz
ab87766031ef4680ac8f5f128e4d6172  Jinja2-2.8-x86_64-1_SBo.txz
e04715051f98fa6ee2f4323e2e3d776a  MarkupSafe-0.23-x86_64-3_SBo.txz
2ac8d38f9a4152518370bec467888263  OpenBLAS-0.2.15-x86_64-1_SBo.txz
4602120a952e40533a3229d8ed24b2cf  Pygments-2.0.2-x86_64-1_SBo.txz
87431af1eebf9237bb0248b8786064c9  QuTiP-3.2.0-x86_64-1_HTz.txz
8f93030697e66fdea3d2a7529b80e541  Sphinx-1.3.3-x86_64-1_SBo.txz
80563b8a655931851af0d5e3206811ff  VTK-6.3.0-x86_64-2_SBo.txz
fdf46e9971ec0ecfc13e4cf183553126  alabaster-0.7.6-x86_64-1_HTz.txz
52bea7e1590084474bc9e8e0a1359691  apptools-4.3.0-x86_64-1_HTz.txz
fd50bb53d9f6f6db12b1f763de2fe221  astroid-1.3.8-x86_64-1_SBo.txz
b28659e98174ad0d0e46051bbceed023  babel-1.3-x86_64-2_SBo.txz
d831353a1c3578cffe58ed761e0a6a96  backports-ssl-match-hostname-3.4.0.2-x86_64-1_SBo.txz
6fbc5230357eae678bcef09f503f4871  blas-3.6.0-x86_64-3_SBo.txz
b5d2cbf493103fad933b2f31eeb18a13  configobj-5.0.6-x86_64-1_SBo.txz
42ea3e71be1f54522f2dddf62f414780  coverage-4.0a5-x86_64-1_SBo.txz
b487afb55ac8e4e16d48954a57f07378  cycler-0.9.0-x86_64-1_HTz.txz
116748875f3ee433d834608603c98651  docutils-0.11-x86_64-1_SBo.txz
6a58bc5030f19a2151dfd59eb7ea535e  envisage-4.4.0-x86_64-2_HTz.txz
1954d290cc80886e55151909462d73bb  ipython-3.1.0-x86_64-1_SBo.txz
3cd02d7d44f25798792af6f39c7b0ed9  lapack-3.6.0-x86_64-3_SBo.txz
34adc90817dbca651289c9805a09f520  libsigsegv-2.10-x86_64-3_SBo.txz
c1a4ecf02d11caeff03ebe33cb18d3da  libsodium-1.0.6-x86_64-1_SBo.txz
655041f58b0df1e93b3d6531dfd93b77  logilab-common-1.1.0-x86_64-1_SBo.txz
899fd74981f99f7bdcc52b39bf786e34  matplotlib-1.5.0-x86_64-1_SBo.txz
26a4aa4700fc3bf51003dee4511d504b  mayavi-4.4.3-x86_64-1_SBo.txz
01699544efba3c0730fbef4da32cc6f2  mock-1.0.1-x86_64-2_SBo.txz
2e675809da0aa3f55402050b72d4896a  nose-1.3.7-x86_64-1.txz
57b4d51d02f623aa7e51fd683779f660  numpy-1.10.1-x86_64-1_SBo.txz
9272826653a65dd1c748566778d455f6  pluggy-0.3.1-x86_64-1_SBo.txz
58e8de7e49d365377a9f2d563af349cb  py-1.4.31-x86_64-1_SBo.txz
5f57132462b2bc95907da5de9fade4e2  pyface-5.0.0-x86_64-1_HTz.txz
edc0f7ca74a0c97efdbe9986fcfc6c59  pylint-1.3.1-x86_64-1_SBo.txz
7156ddff97987da666059fa6e135f1b3  pyparsing-2.0.6-x86_64-1_SBo.txz
a0f45f9ff339f6036a2424af1b92fee6  pysetuptools-18.7.1-x86_64-1_SBo.txz
929ee0380f69703a33d12f530bc45397  python-dateutil-1.5-x86_64-2.txz
3ba3d25861a98296ffb724433a7a91f8  python-twisted-15.2.1-x86_64-1_SBo.txz
4a72af43ce87e5c653b262d6e7253565  pytz-2015.7-x86_64-1.txz
07b56b9ad78fc2f7e6581c7c4a6c1e73  pyzmq-14.7.0-x86_64-1.txz
cb1f5618150eecc42e372ed3b0f8a0a5  qhull-2012.1-x86_64-1_SBo.txz
a9f44bee865cd0e5905bb90a9d364f23  scikits.umfpack-5.2.0-x86_64-1_SBo.txz
2c2c1758c11beea1f6d4981baaca3c56  scipy-0.16.1-x86_64-1_SBo.txz
3632da4ba177259c408a56559fd30e68  six-1.10.0-x86_64-1.txz
fae7fdaf7cefb23ee074857c6d5e9870  snowballstemmer-1.2.0-x86_64-1_HTz.txz
9d460548c3258f64ffe4b65ba1621ffd  sphinx_rtd_theme-0.1.9-x86_64-1_HTz.txz
08053d3826ae84d356dc44cb4ca04e2c  suitesparse-4.4.5-x86_64-1_HTz.txz
f3fa022244da2581c4f702729870b40d  tornado-4.3-x86_64-1_SBo.txz
6e5d8e67d10b622aa1b7ffa18bbb371a  tox-2.2.1-x86_64-1_SBo.txz
593ef9c897f40602fad7f1c73c463fa3  traits-4.5.0-x86_64-2_HTz.txz
3e6ac57d2ca15cafdd1c9ef8473aae46  virtualenv-13.1.2-x86_64-1_SBo.txz
f9594bdf722444ee348c8c1d9d41c454  wxPython-2.8.12.1-x86_64-1.txz
5fc982e0457ff7d5ccac56450951d5b0  zeromq-4.1.3-x86_64-1.txz
136a0a360e1beb55b955c172d9c81668  zope.interface-4.1.3-x86_64-1_SBo.txz