-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
639 lines (363 loc) · 25.4 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Herberth's blog</title>
<meta name="author" content="Herberth Amaral">
<meta name="description" content="Nos dias 21 e 22 deste mês um grupo de dezoito pessoas e eu fizemos uma viagem à BH com um intuito: conhecer melhor as iniciativas de startups da …">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="http://herberthamaral.github.io/">
<link href="/favicon.png" rel="icon">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<link href="/atom.xml" rel="alternate" title="Herberth's blog" type="application/atom+xml">
<script src="/javascripts/modernizr-2.0.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="/javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="//fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
</head>
<body >
<header role="banner"><hgroup>
<h1><a href="/">Herberth's blog</a></h1>
<h2>Just another software engineer</h2>
</hgroup>
</header>
<nav role="navigation"><ul class="subscription" data-subscription="rss">
<li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
</ul>
<form action="https://www.google.com/search" method="get">
<fieldset role="search">
<input type="hidden" name="sitesearch" value="herberthamaral.github.io">
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
<ul class="main-navigation">
<li><a href="/">Blog</a></li>
<li><a href="/blog/archives">Archives</a></li>
</ul>
</nav>
<div id="main">
<div id="content">
<div class="blog-index">
<article>
<header>
<h1 class="entry-title"><a href="/blog/2015/07/26/saldo-da-visita-tecnica-a-bh/">Saldo Da Visita Técnica à BH</a></h1>
<p class="meta">
<time class='entry-date' datetime='2015-07-26T21:28:31-03:00'><span class='date'><span class='date-month'>Jul</span> <span class='date-day'>26</span><span class='date-suffix'>th</span>, <span class='date-year'>2015</span></span> <span class='time'>9:28 pm</span></time>
</p>
</header>
<div class="entry-content"><p>Nos dias 21 e 22 deste mês um grupo de dezoito pessoas e eu fizemos uma viagem à BH com um intuito: conhecer melhor as iniciativas de startups da cidade. Boa parte dos custos da viagem do grupo foi bancado pelo SEBRAE, ao qual agradeço publicamente pela generosa e oportuna oferta.</p>
<p>Fizemos quatro visitas: à Startup <a href="http://www.sympla.com.br/">Sympla</a>, à <a href="http://www.fumsoft.org.br/empreendedorismo/acelera-mg">Acelera</a>, ao <a href="http://www.techmallsa.com.br/">Techmall</a>, ao SEBRAE e ao <a href="http://www.lemonademg.com/">Lemonade</a>. Além disso, fiz por conta própria uma visita ao novo escritório da <a href="http://rockcontent.com/">RockContent</a> e à <a href="https://www.meliuz.com.br/">Méliuz</a>.</p>
<h2>Sympla</h2>
<p>A primeira visita já começou espetacular. O <a href="https://www.linkedin.com/in/rscartacho">Rodrigo Cartacho</a> abriu as portas da Sympla e contou sua experiência no exterior (ele morou na Hungria por 10 anos) e na criação da empresa.</p>
<p>Só por contar sua história, o Rodrigo nos deu uma aula. O ponto mais importante da aula do Rodrigo foi quando ele disse: “você não precisa fazer o MVP completo… basta fazer o M”. O que ele quis dizer é que talvez não seja necessário investir uma quantia alta de dinheiro fazendo um MVP sendo que há meios mais baratos e rápidos de validarem seu modelo. De fato, vimos como isso funcionaria no dia seguinte (continue lendo).</p>
<p>Hoje a Sympla conta com mais de 40 funcionários e almeja ser a maior plataforma para eventos do Brasil.</p>
<h2>Acelera</h2>
<p>O Acelera é um programa de aceleração bem interessante que toma lugar na Fumsoft. Fomos apresentados ao programa e à uma startup que faz parte dele, a <a href="http://onecloudportal.com.br/">OneCloud</a>, que tem como foco a unificação do gerenciamento de recursos computacionais nas nuvens de diferentes provedores.</p>
<p>Inicialmente o programa me pareceu um pouco engessado demais para ter algum resultado, mas mudei de opinião quando vi que há negócios com grande potencial sendo desenvolvidos (e os que já saíram) por lá.</p>
<h2>Lemonade/Techmall</h2>
<p>O Lemonade é um programa de aceleração que acontece nas dependências do Techmall. Rotineiramente, o Lemonade trás pessoas com conteúdo para palestrar no local. No dia 21, tivemos a honra de assistir uma palestra do Dr. Nívio Ziviani (sim, aquela lenda dos algoritmos :). A palestra do Dr. Nívio tinha como tema a geração de riqueza através do conhecimento em que ele nos expos estatísticas de como as pesquisas impactam no PIB de países desenvolvidos com uma comparação com o Brasil. Além disso, o Dr. Nívio citou exemplos de empresas que ele ajudou a criar e que criaram riqueza nos moldes que ele defende.</p>
<p>Uma das perguntas que fiz ao Dr. Nívio foi a seguinte: “O sr. disse, basicamente, que a Akwan não chegou a ser um player global na área de buscadores da web por causa do acidente geográfico de ter nascida no Brasil?”. A resposta foi um veemente “Sim”. Segundo o professor “Na época não havia investidores no Brasil como se tinha no exterior. Precisávamos de uma infraestrutura de alguns milhões de dólares e não tínhamos ninguém para bancar, nem mesmo o BNDES”. Empreender no Brasil é um jogo na dificuldade “hard” por causa dessas e outras. Felizmente há um horizonte de mudanças neste cenário.</p>
<h2>SEBRAE</h2>
<p>Infelizmente não tive como ficar durante toda a extensão da visita ao SEBRAE porque tinha uma visita marcada à Méliuz. Mas esta visita mostrou mais uma vez como que uma conversa de corredor pode render mais que uma palestra inteira. O João Marinheiro, do <a href="http://www.theplant.com.br/">ThePlant</a> nos mostrou várias técnicas de validação de negócios que vão desde a venda de inexistentes cursos de cerveja durante um Startup Weekend ao uso de ad-sense para coletar feedback prematuro de possíveis clientes.</p>
<h2>Méliuz</h2>
<p>A minha visita à Méliuz foi acidental: o Leandro Alves, CTO da empresa, estava em busca de um/a DevOps para o time e me mandou um e-mail. Na cara de pau, pedi para visitar a empresa e tive a grata surpresa que não se tratava de uma empresa pequena, mas uma empresa com dezenas de pessoas trabalhando. Tomamos café e conversamos sobre os requisitos que a pessoa que preencherá a vaga de DevOps terá que ter. Recomendei um conhecido e espero que seja uma boa sugestão.</p>
<h2>RockContent</h2>
<p>Eu sabia que a Rock estava indo bem, mas não sabia que era tanto :). Tive a grata surpresa de visitar o HQ da Rock na rua Alagoas, bem no coração da Savassi, com o André e o Alessandro do <a href="http://www.englishexperts.com.br/">EnglishExperts</a>. Em breve o escritório deles contará com ~800m² de área útil e, segundo o Edmar (que nos recebeu extremamente bem), deve servir até o fim do ano que vem (!!!).</p>
<h2>Resumo da ópera</h2>
<p>Não tenho como agradecer ao SEBRAE pela experiência fornecida. Veio em boa hora. Percebi que, estupidamente, me afastei de BH e que isso me custou caro em termos de boas experiências. Fosse três ou quatro meses atrás, eu teria certeza que esse tipo de viagem seria uma espécie de viagem de turismo para quem fosse. Fico extremamente satisfeito em saber que eu estaria errado se dissesse isso hoje.</p>
<p>Espero voltar em BH em breve para dar continuidade às boas experiências vividas.</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2015/06/07/mestrado-a-verdadeira-graduacao/">Mestrado: A Verdadeira Graduação</a></h1>
<p class="meta">
<time class='entry-date' datetime='2015-06-07T17:57:21-03:00'><span class='date'><span class='date-month'>Jun</span> <span class='date-day'>7</span><span class='date-suffix'>th</span>, <span class='date-year'>2015</span></span> <span class='time'>5:57 pm</span></time>
</p>
</header>
<div class="entry-content"><p>Depois de mais de dois anos sem blogar, volto com um assunto que demanda um pouco de reflexão.</p>
<p>Decidi fazer um mestrado porque acredito que me trará conhecimentos importantes
na minha profissão e porque eu tenho interesse em dar aulas. E fico feliz de
dizer que minhas expectativas estão sendo largamente satisfeitas.</p>
<p>Estou inscrito em três disciplinas:</p>
<ol>
<li>Métodos Matemáticos, em que trabalhamos basicamente até agora com equações diferenciais;</li>
<li>Projeto e Análise de Algoritmos, trabalhamos com matemática discreta, algoritmos, grafos, complexidade até agora;</li>
<li>Inteligência Computacional, optativa em que trabalhamos com aprendizado de máquina, basicamente.</li>
</ol>
<h2>Por quê eu digo que é a verdadeira graduação?</h2>
<p>Basicamente porque não há enrolação. As coisas na graduação são mais
<em>rarefeitas</em>. Foram poucas aulas realmente intensas que tive na graduação, mais
notavelmente Comunicação de Dados I e II (que eu achava que sabia por ter lido
o livro do Tanenbaum antes da graduação).</p>
<p>Foi no mestrado que eu descobri que eu não sei estudar (ou pelo menos que eu
desaprendi a estudar). É uma experiência que deixa humilde boa parte das
pessoas. E é disso que eu sentia falta.</p>
<h2>Os problemas</h2>
<p>Basicamente os problemas são mais comigo mesmo do que com o programa de pós
graduação. Mas basicamente, o mestrado era para ser profissional e me parece
bem acadêmico. Não que seja um problema para mim, mas algumas pessoas podem
entrar achando que é uma coisa, quando na verdade parece bem mais com outra
coisa.</p>
<p>Trabalhar e fazer três disciplinas de uma pós-graduação <em>stricto-sensu</em> é bem
puxado e eu acredito que o programa poderia obter mais exito se incentivassem
os alunos a fazerem disciplinas isoladas antes de entrarem como alunos
regulares. Eu tenho certeza que meu aproveitamento seria bem diferente se eu
atacasse uma única matéria de cada vez. De fato, eu até tentei fazer isso
(mandei e-mail, perguntei para docentes, mas ficou parecendo que o mestrado não
aceitava alunos especiais), mas acabei não insistindo muito na idéia.</p>
<h2>E agora?</h2>
<p>Sempre ouvi que é sempre mais fácil entrar na Universidade do que sair. Foi
assim na minha graduação é continua sendo assim na minha pós. Pensei em trancar
algumas vezes, mas acredito que o sacrifício vai ser recompensado e a parte
mais difícil (1º semestre) já está chegando ao fim.</p>
<p>Desejem-me sorte.</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/02/25/sobre-o-jquery-fundamentals/">Sobre O jQuery Fundamentals</a></h1>
<p class="meta">
<time class='entry-date' datetime='2013-02-25T12:00:00-03:00'><span class='date'><span class='date-month'>Feb</span> <span class='date-day'>25</span><span class='date-suffix'>th</span>, <span class='date-year'>2013</span></span> <span class='time'>12:00 pm</span></time>
</p>
</header>
<div class="entry-content"><p>Comecei o processo de tradução do jQuery Fundamentals <a
href="https://github.com/rmurphey/jqfundamentals/commit/fce468875d0b367f7021bfb7ef11d0fd48426638">há quase 3 anos</a>,
quando meu antigo blog ainda não havia sido destruído pela minha incompetência (de não ter um backup em outro local) e
da Webbynode (por ter apagado meu VPS sem aviso prévio).</p>
<p>Durante o tempo que meu VPS ficou fora do ar, o link pro jQuery Fundamentals também. Agora eu estou retornando o link
pro devido lugar.</p>
<center><a href="http://herberthamaral.com/jquery-fundamentals-book-pt-BR.pdf" class="btn btn-inverse btn-large">
<i class="icon-download-alt icon-white"></i>Download</a>
</center>
<p> </p>
<p><strong>Nota importante:</strong> Apesar do <a href="https://github.com/herberthamaral/jqfundamentals-pt-BR">código do
livro</a> não estar sendo mais mantido por mim, ele ainda se encontra em um repositório aberto. Quem quiser contribuir
fique a vontade :-)</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/02/22/one-who-has-no-dog-hunts-with-a-cat-a-sed-story/">Commands Conversion Table From MySQL to PostgreSQL</a></h1>
<p class="meta">
<time class='entry-date' datetime='2013-02-22T12:00:00-03:00'><span class='date'><span class='date-month'>Feb</span> <span class='date-day'>22</span><span class='date-suffix'>nd</span>, <span class='date-year'>2013</span></span> <span class='time'>12:00 pm</span></time>
</p>
</header>
<div class="entry-content"><p>The above title (One who has no dog hunts with a cat - “Quem não tem cão caça com gato”) is a portuguese proverb which
exemplifies the developer routine regarding to adapting tools and creating others when there are no other available.</p>
<p>Those who use an IDE (like Visual Studio) and a static-typed language are quite used to use the “refact” tool. It allows
you to rename variables and methods, extract methods, rename classes and more, without breaking the code. There are even
other extensions, like resharper, which make it even more powerful.</p>
<p>Non-static-language programmers, like me, are often jealous of what C# guys can do without too much effort. Because of
the nature of dynamic languages, is very hard to develop a tool to do exactly what Visual Studio can do. We have to find
our way to fix our code in multiple places. And we often do it the hard way.</p>
<p>Sometime ago I read a serie of posts called <a href="http://blog.sanctum.geek.nz/series/unix-as-ide/">“Unix as an IDE”</a> and it taught me how to use my enviroment to edit code more efficiently.</p>
<p>One of the things the series of posts havent showed me is the power of <strong>sed</strong>. This simple tool can do almost the same
thing as Visual Studio’s refact tool does sometimes.</p>
<p>Let’s suppose we are maintaining an old PHP project that has queries all over the place and which those uses
“mysql_db_query” (now deprecated) instead of “mysql_query”. Here’s a life-saving command:</p>
<pre><code>$ find /your/project/folder/ -name "*.php" | xargs sed -i s/mysql_db_query/mysql_query/
</code></pre>
<p>We can read it as follows: “find every file ending with *.php in folder /your/project/folder and then substitute
mysql_db_query with mysql_query in each one of them”. Pretty simple, huh?</p>
<h3>A more complicated example</h3>
<p>I’m working on a Django project which uses <a href="https://github.com/tzangms/django-bootstrap-form">bootstrapform</a>
to better rendering some forms. However, since we’re moving to <a
href="http://django-crispy-forms.readthedocs.org/en/latest/">Crispy Forms</a>, bootstrapform is no longer needed. So
let’s remove it!</p>
<p>First, let’s change <pre>{% load bootstrap %}</pre> to <pre>{% load crispy_forms_tags %}</pre> inside templates. We
can do it as follows:</p>
<pre><code>$ sed --in-place 's/ {% load bootstrap %}/{% load crispy_forms_tags %}/' `find . -name "*.html"`
</code></pre>
<p>The command is slightly different from the previous one, but it works like a charm.</p>
<p>The second one is a bit more difficult. We need to change</p>
<pre>{{any_form|bootstrap }}</pre>
<p></p>
<p>to</p>
<pre>{% crispy any_form %}</pre>
<p></p>
<p>There are no other way: you need to have some regex knowledge to pick this up:</p>
<pre><code>$ sed --in-place 's//{% crispy \1 %}/' `find . -name "*.html"`
</code></pre>
<p>In this case, <a href="http://www.regular-expressions.info/brackets.html">grouping</a> saved my day. It is important to
remember that sed does not only work on source code files: it works everywhere.</p>
<p>If you are a programmer that uses Unix, keep your sed skills sharp. If you uses windows to work, I can recommend <a
href="http://gnuwin32.sourceforge.net/packages/sed.htm">sed for windows</a> or cygwin for a more complete environment.</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/02/10/commands-conversion-table-from-mysql-to-postgresql/">Commands Conversion Table From MySQL to PostgreSQL</a></h1>
<p class="meta">
<time class='entry-date' datetime='2013-02-10T13:00:00-02:00'><span class='date'><span class='date-month'>Feb</span> <span class='date-day'>10</span><span class='date-suffix'>th</span>, <span class='date-year'>2013</span></span> <span class='time'>1:00 pm</span></time>
</p>
</header>
<div class="entry-content"><p>A lot of companies are moving or considering moving to PostgreSQL today. The reasons vary a lot and it is not the scope
of this blog post to address those reasons, but to help the developers to do an easier adoption of new technology by
showing a simple command conversion table.</p>
<p>Although the blog title says MySQL to PostgreSQL, it can serve as a reverse path (PostgreSQL to MySQL). So, here it is:</p>
<table class="table table-bordered table-striped table-condensed">
<tr>
<th>MySQL command</th>
<th>PostgreSQL equivalent</th>
</tr>
<tr>
<td>show databases;</td>
<td>\\l</td>
</tr>
<tr>
<td>use somedb;</td>
<td>\\c somedb </td>
</tr>
<tr>
<td>show tables;</td>
<td>\\dt </td>
</tr>
<tr>
<td>describe table sometable;</td>
<td>$ pg_dump -U postgres -t mytable --schema-only mydb</td>
</tr>
<tr>
<td>show schemas </td>
<td>\\dn</td>
</tr>
</table>
<h3>Some notes</h3>
<p>There’s a lot of differences between MySQL to PostgreSQL. Some you need to address every single time (like the
differences between commands I’ve pointed out). Others are less frequent, like creating databases, users or setting up a
replication.</p>
<p>If you are planning to learn or move to PostgreSQL from MySQL, I’d like to recommend that you learn the differences
between authentication, which includes creating and giving priveleges to users and creating databases. It should be good
enough for small to medium setups.</p>
<p>Any important command that I’ve missed? Please, drop a line in the comments :-)</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/02/04/a-new-template-for-django-projects/">A New Template for Django Projects</a></h1>
<p class="meta">
<time class='entry-date' datetime='2013-02-04T13:00:00-02:00'><span class='date'><span class='date-month'>Feb</span> <span class='date-day'>4</span><span class='date-suffix'>th</span>, <span class='date-year'>2013</span></span> <span class='time'>1:00 pm</span></time>
</p>
</header>
<div class="entry-content"><p>Since Django 1.4 it is possible to use project templates. This means that you can start off your Django project
with a different project structure, which also means that you can avoid some initial configuration hassle.</p>
<p>Django follows Python’s principle of “explicit is better than implicit”. And this is the justification I’ve got when I
asked why Django does not have some configurations done by default. I think “convention over configuration” is not
necessarily “explicit is better than implicit”’s enemy. Both can live together as long you keep the configurations
explicit.</p>
<p>Thinking about that I’ve decided to write a project template which eliminates some of the Django’s annoyances when
starting a project, mainly related to paths (templates, media and static). This is specially useful for newcomers so
they don’t lose a lot of time configuring the project.</p>
<h3>Show me it working!</h3>
<p>You can start off a project using this template like this:</p>
<pre>
$ django-admin.py startproject myproject \
--template=https://github.com/herberthamaral/django_project_template/archive/master.zip
$ cd myproject
$ python manage.py runserver
</pre>
<p>At this point you can point out your browser to <code><a href="http://localhost:8000">http://localhost:8000</a></code> and you can see Django’s initial
page. But, if you point it to <code><a href="http://localhost:8000/static/readme.txt">http://localhost:8000/static/readme.txt</a></code>, you can also see the static folder’s
configuration working. The same for the media folder: <code><a href="http://localhost:8000/media/readme.txt">http://localhost:8000/media/readme.txt</a></code>.</p>
<p>The template path is also configured. And there is a example template located in
<code>myproject/templates/index.html</code>. Yup, it is the initial Django’s template, slightly modified.</p>
<h3>Limitations and workarounds</h3>
<p>Not everything is a sea of roses, though:</p>
<ul>
<li>Django does not offer a way to change the project folder name. For that reason, I’ve been forced to add a custom code
in manage.py in order to change this folder name to match the application name.</li>
<li>There is some extra code in urls.py too.</li>
</ul>
<h3>Final words</h3>
<p>I hope this can solve some problems for newcomers willing to learn Django. Please <a href="/contact.html">contact me</a>
if you find a bug or if you have a suggestion.</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/02/02/a-new-era-a-new-blog/">A New Era, a New Blog</a></h1>
<p class="meta">
<time class='entry-date' datetime='2013-02-02T13:00:00-02:00'><span class='date'><span class='date-month'>Feb</span> <span class='date-day'>2</span><span class='date-suffix'>nd</span>, <span class='date-year'>2013</span></span> <span class='time'>1:00 pm</span></time>
</p>
</header>
<div class="entry-content"><p>So, my old blog was wiped out, sent to oblivion, and I had no backups. So it is good to start over again. Probably in
the right way with git-based backups (using <a href="https://github.com/herberthamaral/herberthamaral.github.io/">Github</a>).</p>
</div>
</article>
<div class="pagination">
<a href="/blog/archives">Blog Archives</a>
</div>
</div>
<aside class="sidebar">
<section>
<h1>Recent Posts</h1>
<ul id="recent_posts">
<li class="post">
<a href="/blog/2015/07/26/saldo-da-visita-tecnica-a-bh/">Saldo Da Visita Técnica à BH</a>
</li>
<li class="post">
<a href="/blog/2015/06/07/mestrado-a-verdadeira-graduacao/">Mestrado: A Verdadeira Graduação</a>
</li>
<li class="post">
<a href="/blog/2013/02/25/sobre-o-jquery-fundamentals/">Sobre O jQuery Fundamentals</a>
</li>
<li class="post">
<a href="/blog/2013/02/22/one-who-has-no-dog-hunts-with-a-cat-a-sed-story/">Commands Conversion Table From MySQL to PostgreSQL</a>
</li>
<li class="post">
<a href="/blog/2013/02/10/commands-conversion-table-from-mysql-to-postgresql/">Commands Conversion Table From MySQL to PostgreSQL</a>
</li>
</ul>
</section>
<section>
<h1>GitHub Repos</h1>
<ul id="gh_repos">
<li class="loading">Status updating...</li>
</ul>
<a href="https://github.com/herberthamaral">@herberthamaral</a> on GitHub
<script type="text/javascript">
$(document).ready(function(){
if (!window.jXHR){
var jxhr = document.createElement('script');
jxhr.type = 'text/javascript';
jxhr.src = '/javascripts/libs/jXHR.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(jxhr, s);
}
github.showRepos({
user: 'herberthamaral',
count: 0,
skip_forks: true,
target: '#gh_repos'
});
});
</script>
<script src="/javascripts/github.js" type="text/javascript"> </script>
</section>
</aside>
</div>
</div>
<footer role="contentinfo"><p>
Copyright © 2015 - Herberth Amaral -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
</footer>
<script type="text/javascript">
(function(){
var twitterWidgets = document.createElement('script');
twitterWidgets.type = 'text/javascript';
twitterWidgets.async = true;
twitterWidgets.src = '//platform.twitter.com/widgets.js';
document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
})();
</script>
</body>
</html>