Últimos Conteúdos

Editar o arquivo /etc/rc.local:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# shutdown everyday at 6 am
shutdown -h 06:30 &

exit 0

Itens necessários:

Girando as imagens (caso elas tenham sido capturadas com o celular na horizontal):

for file in *.jpg; do convert "$file" -rotate -90 "${file%.jpg}"_rotated.jpg; done

As imagens convertidas terão o nome "_rotated.jpg".

Agora, precisamos criar o vídeo:

ffmpeg -r 5 -pattern_type glob -i '*_rotated.jpg' -vcodec libx264 timelapse_5fps.mp4

Altere o parâmetro -r 5 para definir a quantidade de quadros por segundo. Quando for um vídeo longo, é melhor usar uma taxa maior, tipo 15.

 

Usando o terminal, é óbvio.

Primeiro, instale o transmission. Junto com ele, vai vir o daemon e alguns programas. Os que precisamos são o transmission-create e o transmission-remote.

Depois, precisamos de uma lista de trackers. Neste link tem alguns:

https://github.com/ngosang/trackerslist

Navegue até a pasta/arquivo que será compartilhada, e execute este comando, para criar o arquivo .torrent:

transmission-create pasta_a_ser_compartilhada/ -o arquivo.torrent -t http://umtracker:1337/announce -t udp://outrotracker:1337/announce

Informe quantos trackers puder, para facilitar a distribuição. Neste caso tem só dois, mas no teste que fiz, coloquei 57.

Agora, é preciso começar a semear o torrent, para que as outras pessoas possam baixar.

transmission-remote --add arquivo.torrent --download-dir /caminho_completo_ate_a_pasta_compartihada/ -n usuario_do_transmission:senha_do_transmission

Aqui tem um detalhe: É preciso informar o caminho para chegar na pasta/arquivo compartilhado na opção --download-dir. Com isso, o Transmission vai perceber que tu já tem todos os arquivos do torrent, e vai começar a semear. Isso é importante caso tu esteja semeando um arquivo/pasta que não esteja na pasta padrão de downloads do Transmission.

Por exemplo, se tu vai compartilhar a pasta /home/usuario/Downloads/blariblabla, os comandos ficam assim:

cd ~/Downloads

transmission-create blariblabla/ -o arquivo.torrent -t http://umtracker:1337/announce -t udp://outrotracker:1337/announce

transmission-remote --add arquivo.torrent --download-dir /home/usuario/Downloads/ -n usuario_do_transmission:senha_do_transmission

Depois disso, é só distribuir o arquivo .torrent - seja através do Piratebay, ou de qualquer outro modo.

Um jeito bom de testar se o torrent vai funcionar é baixando ele através do https://seedr.cc/.

 

By default, Netdata only shows data from the last hour (unless configured to keep data for a longer period of time).

In version 1.15, they included a database engine, which can be used to store more data. It is very easy to enable it, but I could not find anywhere a guide showing how to do it. So, here it goes.


First, you must update your Netdata to at least v. 1.15.

Then, you must find your netdata install folder. There, you must look for a script called edit-config. In one of my servers, it is located at /etc/netdata, but in another one it was in a different location. Navigate to that folder, then run this command:

./edit-config health.d/dbengine.conf

You may need to use sudo.

After that, you must edit netdata.conf, which is in the same folder. Under [global], you must add these 3 lines:

memory mode = dbengine
page cache size = 32
dbengine disk space = 256

And that's it. Reboot, and load the netdata page at servername:19999. To make sure that it is working, I had to wait one hour to see if it would keep showing old data or not. Maybe there's a better way to check it, but that's what I did.

 

 

 

THE LESSER-KNOWN PROGRAMMING LANGUAGES #18: FIFTH

FIFTH is a precision mathematical language in which the data types refer to quantity. The data types range from CC, OUNCE, SHOT, and JIGGER to FIFTH (hence the name of the language), LITER, MAGNUM and BLOTTO. Commands refer to ingredients such as CHABLIS, CHARDONNAY, CABERNET, GIN, VERMOUTH, VODKA, SCOTCH, and WHATEVERSAROUND.

The many versions of the FIFTH language reflect the sophistication and financial status of its users. Commands in the ELITE dialect include VSOP and LAFITE, while commands in the GUTTER dialect include HOOTCH and RIPPLE. The latter is a favorite of frustrated FORTH programmers who end up using this language.

Sempre esqueço.

 

$pasta = __DIR__.'/pasta/processar';
$iterator = new DirectoryIterator($pasta);

foreach ( $iterator as $entry )
{
if($entry->isFile ())
{
$file_extension = pathinfo($entry->getFilename(), PATHINFO_EXTENSION);
if($file_extension=='log')
{
$arquivos[] = $entry->getPathname();
}
}
}

 

Um aprendiz perguntou ao mestre: "Eu vejo que uma empresa de computadores é muito maior que as demais. Ela ascende sobre seus competidores como um gigante entre anões. Qualquer uma de suas sub-divisões poderia comprometer todo um mercado. Como isso é possível?"

O mestre respondeu, "Porque você faz perguntas tão tolas? Aquela empresa é gigante porque é gigante. Se ela só fabricasse hardware, ninguém a compraria. Se ela só mantivesse sistemas, as pessoas a tratariam como um serviçal. Mas por ela combinar todas essas coisas, as pessoas a vêem como um dos deuses! Por não procurar se empenhar, ela conquista sem fazer grandes esforços."

Para gerar o boleto de pagamento do ITBI na cidade de São Paulo, precisa acessar e preencher o seguinte formulário:

https://www3.prefeitura.sp.gov.br/damsp_itbi/forms/frm_sql.aspx?Tipo=Sql

Se o imóvel não tem vaga, é só preencher normalmente o formulário com os dados solicitados.

O que complica é no caso do imóvel ter vaga de garagem, e essa vaga ter uma matrícula e IPTU diferentes do imóvel, o que foi o meu caso.

Quando isso acontece, é necessário fazer dois ITBI - um pro apartamento, e um pra vaga de garagem.

O que complica mais ainda é quando a vaga de garagem não é separada da garagem inteira - ou seja, o valor de mercado da sua vaga é, seilá, R$50.000,00, mas o valor do ITBI é baseado no valor venal, que no caso é de R$5.000.000,00 - sim, cinco milhões.

Nesse caso, primeiro tu preenche a guia do ITBI com os dados do apartamento, informa se teve financiamento, etc e tal. Só não esqueça que no campo Valor da Transação vai apenas o valor de compra do apartamento, e não o total (apartamento + vaga).

Segundo, precisa preencher o ITBI da vaga, e é aqui que complica um pouco.

  • No campo Valor da Transação, vai o valor pago pela vaga (ex.: 50.000,00)
  • No campo Tipo financiamento, não vai nada - a moça que me atendeu na Secretaria da Fazenda disse que não se deve informar nada aí, pois vaga não tem financiamento.
  • Agora, o pulo do gato: no campo "Está sendo transmitida a totalidade do imóvel", tu marca "não". Vai aparecer um campo pedindo a proporção transmitida. Esse campo deve ser preenchido com o valor da fração ideal da vaga, descrita na matrícula da vaga (aquele papel amarelo). No meu caso, era 0,19% (na matrícula, diz 0,1962, mas o formulário só aceita 2 casas decimais).

E é isso. Pague os dois boletos, e depois leve ao cartório.

 

Ao contrário do que eu tinha escrito, não é nada disso. Depois de esperar 5 dias, o cartório não aceitou o pagamento do ITBI, pois estava errado. Como o pessoal do cartório fez o novo cálculo, eu acabei sem saber qual a regra correta, mas a orientação deles é que se vá até a prefeitura, para obter o valor correto.

Ah, um detalhe: Pergunte antes no cartório se o boleto pode ser pago no caixa eletrônico. Quando estava na fila do Itaú pra pagar o boleto, a moça do caixa disse que no cartório que ela foi (se não me engano era o 15°), eles não aceitaram o comprovante emitido pelo caixa eletrônico. No meu caso (8° cartório), eles aceitaram normalmente.

Ah, outro detalhe: O horário do cartório é até as 17h, mas o atendimento para assuntos imobiliários é só até as 16h.

Ah, mais um último detalhe: Nós já tivemos um imóvel financiado pelo Minha Casa Minha Vida, que até já foi vendido. Mesmo assim, o cartório não aceitou a declaração de primeiro imóvel pelo SFH, e tivemos que pagar o valor integral, sem ter direito ao desconto de 50%.

Listando os dispositivos e partições encontrados:

sudo fdisk -l

Montando a partição do dispositivo em uma pasta:

sudo mount /dev/sdb1 /media/usb/

Obs: A pasta /media/usb precisa ter sido criada antes.

Listando o espaço em disco dos dispositivos:

df

Desmontando a partição para remover o drive:

sudo umount /media/usb

There is hardly a thing in the world that some man can not make a little
worse and sell a little cheaper.

Going to church does not make a person religious, nor does going to school make a person educated, any more than going to a garage makes a person a car.

Eu sempre esqueço a conta que deve ser feita, então vamos lá:

A conta que deve ser feita é dividir o preço do etanol pelo preço da gasolina.

Se o resultado for inferior a 0,70, compensa mais abastecer com etanol.

Se o resultado foi superior a 0,70, a gasolina é mais vantajosa.

Caso o valor seja igual a 0,70, a opção é indiferente.

... aí tu olha praquele notebook antigo parado, ali, e pensa "preciso fazer alguma coisa com ele".

Aí tu sobe um servidor de Xonotic nele, e deixa ligado o fim de semana inteiro. E, ao contrário do que pensei, até que apareceram algumas pessoas.

Agora, preciso descobrir se o ping ficou decente, e se consigo gerar estatísticas de quantos usuários acessaram.

Link do servidor: http://stats.xonotic.org/server/18368

Um exemplo, porque vivo esquecendo.

$.ajax({
  dataType: 'json'
  ,url: url
  ,data: form.serialize()
  ,method:'POST'
  ,success: function(data){
    sucesso(data);
  }
  ,error: function(jqXHR, textStatus, errorThrown){

  }
  ,complete: function(){
    $('#carregando').slideUp();
  }
});

Everyone says that having power is a great responsibility.

This is a lot of bunk.

Responsibility is when someone can blame you if something goes wrong.

When you have power you are surrounded by people whose job it is to take the blame for your mistakes.

If they're smart, that is.
-- Cerebus, "On Governing"