quarta-feira, dezembro 08, 2010

The web as random acts of kindness

A must see :)

Jonathan Zittrain: The Web as random acts of kindness

segunda-feira, dezembro 06, 2010

quinta-feira, dezembro 02, 2010

Microsoft is investing in an open source company

http://www.networkworld.com/news/2010/120110-microsoft-quietly-invests-in-ibm.html

The buzz is that Microsoft is pulling strings to nurture enemies of IBM. But horses are guarding the pawns while the queen is not seen in a position of attack.  If this is proven to be true, I hope it end's up in IBM catching these pawn's en passant...

while one must recognize the historical genius of Microsoft's market strategy. It strikes me with an equal amount: the wow and the disgust....



sábado, novembro 20, 2010

vsftp , remote access

I had to configure this so that a client could test an app.  I confess that ftp is not on my expertise list, and is also part of my 'insecure paranoia' list... but knowing of no better solution for the problem @hands..  you stick with the best you got. If you're going for long term use... I'd sugest searching google for a way to keep your server running on sftp..  a reminder that ... encryption is still the best vaccine we got against web disease... =P

steps are
1) configure to allow virtual users && allow remote acess
2) gen users auth
3) configure your router to allow connection to the machine where vsftp is running

1) sample /etc/vsftpd/vsftpd-virtual.conf
 # disables anonymous FTP
anonymous_enable=NO
# enables non-anonymous FTP
local_enable=YES
# activates virtual users
guest_enable=YES
# virtual users to use local privs, not anon privs
virtual_use_local_privs=YES
# enables uploads and new directories
write_enable=YES
# the PAM file used by authentication of virtual uses
pam_service_name=vsftpd-virtual
# in conjunction with 'local_root',
# specifies a home directory for each virtual user
user_sub_token=$USER
local_root=/var/www/$USER #CHANGE THIS TO YOUR DESIRED FOLDER
# the virtual user is restricted to the virtual FTP area
chroot_local_user=YES
# hides the FTP server user IDs and just display "ftp" in directory listings
hide_ids=YES
# runs vsftpd in standalone mode
listen=YES
# listens on this port for incoming FTP connections
listen_port=60021
# the minimum port to allocate for PASV style data connections
pasv_min_port=62222
# the maximum port to allocate for PASV style data connections
pasv_max_port=63333
# controls whether PORT style data connections use port 20 (ftp-data)
connect_from_port_20=YES
# the umask for file creation
local_umask=022

#log
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES



#remote client
pasv_enable=yes
pasv_address=YOUR_NETWORK_PUBLIC_ADDRESS
pasv_min_port=65000

2) create a text file containing your users and their passwords 
ex 
 user1
 user1pwd
 user2
 user2pwd


generate the db file that vsftp will use , your comand may be something like db4.8_load depending on what version you got installed

user@host#  db_load -T -t hash -f logins.txt /etc/vsftpd/virtual-users.db
remove your logins.txt file it is no longer needed 

start your server 
sudo /usr/sbin/vsftpd /etc/vsftpd/vsftpd-virtual.conf 



3) Configure your router 

 http://www.dslreports.com/forum/r4733382-HOW-TO-vsftpd-linux-and-linksys-router


HOW TO: vsftpd, linux and linksys router

Recently I've got vsftpd running from behind my BEFSX41 both in PORT and PASV modes so I thought that I share my set-up since FTP servers are quite a hot topic here ;)

My config:
BEFSX41 1.43.4 (any BEFSx should be OK)
vsftpd 1.1.1 (1.1.0 and up supports PASV from behind NAT, get it here: vsftpd.beasts.org )
RedHat 7.3 (any linux should be fine)

Router set-up:
Forward port 21 TCP on UPnP Forwarding page
Forward ports 65000~65534 TCP on Port Range Forwarding Page (any range, it's up to you)

vsftpd.conf set-up:
pasv_enable=YES
pasv_min_port=65000 (same range as on router)
pasv_max_port=65534
pasv_address=100.100.100.100 (here comes your WAN IP)
...all other variables are set to default values

And since I have dynamic WAN IP from my ISP here's a little script running from cron to update vsftpd.conf with current IP (I use free dynamic DNS service www.dynu.com )
code:
#!/bin/sh
#vsftpd.conf IP update by Brano See Profile
vsftpd_conf=/etc/vsftpd.conf
vsftpd_log=/var/log/vsftpd.log
#change to your domain name in next line
my_ip=`host your_host.dynu.com | cut -f4 -d" "`
vsftpd_ip=`grep pasv_address $vsftpd_conf | cut -f2 -d=`

if [ "$my_ip" != "$vsftpd_ip" ] ; then
   ( echo ",s/$vsftpd_ip/$my_ip/g" && echo w ) | ed - $vsftpd_conf
   echo `date` "$vsftpd_conf updated with $my_ip IP address" >> $vsftpd_log
fi

...hope this helps to somebody :)

My special thanks to Bill_MI See Profile


happy sharing

quarta-feira, outubro 14, 2009

politiquices

Acabo de ler este e-mail.


Caros colegas:

Nós, membros discentes da Comissão Pedagógica do DEETC, informamos-vos da nossa demissão colectiva. Passados quase dois anos desde a nossa eleição em Dezembro de 2007, tivemos de encarar o facto de que não existem condições nem estabilidade para que possamos defender os vossos interesses, motivo principal da nossa candidatura.

Ao longo do nosso mandato o departamento dificultou o cumprimento das nossas tarefas, ao ponto de nos deixar numa posição anímica. Dessas tarefas, destacamos a elaboração dos horários.

No seu artigo 33º, os (antigos) estatutos do ISEL conferem ao Conselho Pedagógico a competência para a elaboração dos horários de funcionamento das turmas, tarefa que é delegada nas Comissões Pedagógicas de cada departamento. No DEETC é adoptada, de acordo com o artigo 13º do seu regulamento, uma colaboração com a Comissão Executiva, que tem a seguinte forma (sendo a que faz mais sentido, mas podendo ser outra): apresentamos à Comissão Científica o número de turmas a vigorar no semestre e, com base nesse documento, a Comissão Científica elabora e entrega-nos a distribuição do serviço docente (de acordo com o artigo 9º na secção 4 do regulamento do DEETC). A distribuição de serviço docente não é absoluta nem inquestionável, sendo nossa responsabilidade interceder em nome dos alunos quando o consideramos pertinente. Uma competência da Comissão Pedagógica é, aliás, fechar ou abrir turmas conforme a proporção de alunos face aos docentes destacados.

Nos últimos três semestres tem-se verificado um atraso na entrega da distribuição de serviço docente, não sendo respeitado o prazo que a Comissão Pedagógica indica como razoável para que o trabalho subsequente possa ser realizado sem pôr em causa o início das aulas. Como consequência, trabalhamos dia e noite para que o atraso do início das aulas não seja ainda mais grave, muitas vezes à custa de deixarmos por resolver certos problemas patentes nos horários. Há um ano, o início atempado das aulas só foi assegurado porque alguns membros da Comissão abdicaram das suas férias para durante o mês de Agosto construírem os horários. No semestre corrente, a distribuição de serviço docente foi-nos entregue, incompleta e insuficiente, no final de Julho, tornando-se frutífera apenas na segunda semana de Setembro e por fim completa já depois do início das aulas. Estes sucessivos atrasos mostram uma despreocupação em relação ao bom funcionamento do departamento e um desrespeito pelo nosso trabalho/responsabilidades, estando subjacente a ideia de que "depois a Comissão Pedagógica desenrasca".

O departamento crê que os horários são fáceis de elaborar, esquecendo-se que estamos perante cinco cursos, transversais entre si, onde uma UC de 3º semestre pode interferir com uma UC de mestrado num outro curso. Esta dificuldade natural é ainda agravada pela mancha de inconveniência de cada docente. A "mancha de inconveniência" (que pode ser consultada juntamente com o horário do docente) é uma cortesia que estendemos aos nossos docentes e que tentamos respeitar. Durante o nosso mandato tentámos minimizar a sua utilização abusiva, já verificada em mandatos anteriores. Apesar disso, estas "manchas" complicam em muito a elaboração de horários, especialmente por serem interpretadas por parte de muitos docentes como uma obrigação que temos de cumprir ou pelo menos negociar.

Não obstante a estas dificuldades e independentemente de quando nos é entregue a distribuição de serviço docente, o departamento entende que temos sempre tempo suficiente para os fazer, seja esse período de apenas duas semanas (no caso do semestre corrente) ou uma (no caso do semestre passado). Estas são semanas de trabalho intensivo acrescentado às 5 UC que temos de fazer por semestre e cuja única regalia é o acesso à época especial de exames. Já nos foi dito que consideramos aquelas 1 ou 2 semanas curtas porque temos excesso de zelo em relação aos horários. Não se trata de excesso de zelo mas do cumprimento das nossas responsabilidades para convosco, tentando aplicar critérios de utilidade calculada na elaboração dos horários (por exemplo, aulas da mesma UC não serem agendadas para dias consecutivos). Além disso, durante este período já de si reduzido, ainda temos de lidar com os problemas da distribuição de serviço docente já referidos.

Além dos horários, ficamos muitas vezes reduzidos a trabalho administrativo (por falta de meios), que nos afasta do mais relevante: a componente pedagógica. Por outro lado, o departamento não assume uma posição coesa perante o ISEL, deixando transparecer ideias como a presente no cartaz afixado à porta do departamento até 30 de Setembro. Apesar de tudo, tentámos sempre defender os interesses dos alunos e estamos convictos que fizemos sempre o melhor trabalho possível face às condições existentes. Relembramos, por exemplo, que até ao início do nosso mandato as datas nos calendários de testes eram extremamente instáveis e as sobreposições entre UCO eram feitas sem critério.

Atendendo ao exposto e a tudo o que ficou por relatar, decidimos renunciar ao nosso mandato. Apesar disso, a elaboração de mapas de testes e exames para o presente semestre – trabalho mais relevante a ser realizado – não está comprometida.

Esperamos que compreendam,

Os alunos membros da Comissão Pedagógica do DEETC:

Luís Gonçalves

João Neto

Carlos Vicente

Eduardo Loureiro

Duarte Nunes

João Antunes

#################################

Quem frequenta o ISEL sabe da vergonha que foi o inicio do periodo lectivo este semestre. A actual comissão pedagogica já não via as boas graças dos discentes desde pelo menos ultimo o semestre de verão. Caindo a principal critica na elaboração dos horarios que matavam a habitual facilidade com que se intercalavam cadeiras, abdicando da regra: cadeiras do mesmo semestre sao sempre de manha, ou sempre há tarde. Culminou este semestre com o atraso da entrega dos horarios, que por sua vez atrasou o inicio das aulas. Deu direito a montanhas de papel a correr em requerimentos ao concelho directivo, à causa de atrasos nas inscriçoes que levaram a multas... (muitas pessoas estao limitadas aos horarios para escolher as cadeiras que vao frequentar). Se a má disposição se visse o ISEL teria estado sob tempestade com direito a trovoes e raios fulminantes.

Como eu gostava de ser mosquinha e saber o que realmente se passou. É que nestas coisas.. da politiquice.. é sempre dificil uma pessoa ter a real noção dos factos. O subalterno aponta o dedo a quem dá a cara, que neste caso é comissão pedagógica. Interface entre docentes e alunos.... Como em todas as interfaces, só vemos o que é publico e o lado dos docentes não é nada publico. Lá estão eles nos seus gabinetes, e comunicação é com o CD ou com a CP. Não há ligação (publica)aos discentes.

Na realidade tanto alvoroço, vem de uma raiz comum: O abanar de direitos adquiridos. Por um lado dos alunos que gosavam da conveniencia da não sobreposiçao de cadeiras de semestres consecutivos. (com a regra da manha tarde, acrescida de outra que obriga a que se um semestre é de manha o seu consecutivo é à tarde) Por um lado dos docentes, com a sua mancha de inconveniencia.. e o habitual atraso na entrega, que não é dos docentes.. é do povo portugues que tem fama de ser calão à nascença. Estranha-me francamente, a fazer uma graçola de baixo nivel, que ainda ninguem se tenha lembrado de testar o genoma tuga, á procura do gene...

Eu continuo a dizer que do ponto de vista estatistico as pessoas fazem sempre aquilo que podem. Há sempre um esperto que encontra um buraquinho onde se enfiar e estragar tudo.

Como eu gosto de ser programadora... e de saber onde andam as minhas variaveis, o que fazem as minhas funções, de ter tratamento de excepções...

É que a agravar a coisa a comissão pedagógica é constituida por alguns dos alunos mais brilhantes que já passaram no ISEL. Brilhantes do ponto de vista académico pois claro.

Não sei que ligações teem com o “poder instituido”. A minha teoria perante o actual cenário é esta: a inexistencia destas ligações. É que neste dança dança de: o que é que tu podes sem que me pises os calos, conta muito o parlare, a influencia, o conhecimento profundo das regras do jogo e em ultima instancia o “descaramento”. Que é o tipo ter vontade, ter confiança que pode o que tem vontade... e ter jogo de cintura para o fazer, de preferencia, como dizia o patrão hoje na reunião “resolvendo o conflito sem confronto”.

Conclusão: O que é que correu mal aqui? Foi falta de politiquice?

É provavel que esta carta venha a ter consequencias nefastas. É que levar isto a hasta publica, vai levantar muita poeira. Faz-nos falta um mediador... eu não gosto deles.. geralmente são tipos com excesso de auto-confiança, bom português, pouca competencia em todas as outras areas e que só encontram expressão nestes bicos de obra, nas orlas da massa, entre o fogo e a chama.... Ter de suportar a sua presença é um sapo daqueles... verdes e gordos como as vacas de quinta.

Muitos sapos tem uma pessoa de engolir nesta vida... mas ás vezes é melhor engoli-los. Se os deixamos á solta os gajos fazem um cagaçal que se ouve daqui a Orion.

terça-feira, outubro 13, 2009

Estava a tentar adormecer e a pensar no codigo do post anterior.. e acabo de reparar que é ineficiente! No limite desperdicará sempre memoria, porque se compromete a conhecer á cabeça a dimensão dos arrays que vai alocar.

A solução elegante seria a inexistencia à priori do chunk de memoria que guarda os arrays e alocar a pedido um chunk para cada nova source, fazendo uma copia desta lá para dentro.

É irritante continuarem a escapar-me estes detalhes.
complicometro.

Problema:
Alocar um array de arrays de chars.

Desde que fiz picc à trinta milenios que sonho com escrever este código.

tudo é simplificado por ter uma funçao que recebe um ponteiro para um array de ponteiros de char , um ponteiro para um chunk de memoria onde estou a escrever o conteudo do array, e um ponteiro para o conteudo.

posto isto sempre que me apetecer escrever qualquer coisa para lá posso simplesmente:
char ** myArray = malloc(sizeof(char**)* MyArrLength);
char *myChunk = malloc(MAX_STRLEN * nElems);

addStringToArray(&myArray, &myChunk, "uma string completamente ao acaso"); addStringToArray(&myArray, &myChunk, "ai que contentamento!!");

printf("%s", *(myArray+1));

vai expor na consola "ai que contentamento!!"


void addStringToArray(char*** arrP, char** chunk, char * source){
char ** i = *arrP;
char * dst = *chunk;
*dst='\0';
mystrcat(dst,source); //copiar para o chunk
*i=dst; //guardar o endereço de inicio desta string
//acertar o i
*arrP=i;
//avançar esse pointer
++(*arrP);
//acertar o p
*chunk = dst + strlen(source)+1;//+1 pk queremos guardar o '\0'
}


Enfim... divirto-me com estas coisas. =)

quarta-feira, setembro 30, 2009

cvs? svn?

Algo com que qualquer tipo que tenha uma distribuição de linux e que goste de brincar com ela já ouviu falar são estas duas coisas CVS e SVN.

Pelo menos tem o tal tipo a ideia de que são coisas que permitem organizar o desenvolvimento de software. Provavelmente até fez copy paste de algum comando que lhe descarregou a source para o disco.

Bom o que são? CVS significa Current Version System e é um sistema de controle de versões. Na pratica aquilo que permite é:
# Manter um repositório centralizado com o código
# Desenvolvimento em paralelo (se dois ou mais indivíduos estão a trabalhar sobre o mesmo código, quando um deles dá ordem de atualização (commit ou update) o cvs sabe verificar que ficheiros foram modificados e quando, permitindo por isso alertar o developer que ele está a submeter uma versão modificada de determinado ficheiro que já foi atualizado depois de ele o ter descarregado do servidor) Melhor, até há uns brinquedos que se poe por cima e que fazem o diff dos ficheiros permitindo ver lado a lado uma versão e a outra e fazer merge das duas.
# Um registo sem perdas de cada uma das versões do código
... etc

SVN significa subversion, e é uma evolução do CVS. Não me vou alongar nas diferenças porque confesso que nunca usei. O leitor curioso pode encontrar informação na infame Wild Wild Web. Se tiver tempo e paciencia até recomendo que o faça, porque o cvs está a "morrer" em detrimento de outras soluções. Este artigo refere ainda e dá destaque ao cvs porque é o mais simples, pretendendo apenas servir projectos de pequena dimensão e ser fácil de usar.

Este post vem a propósito do espanto que sinto por nunca ter usado isto para os trabalhos da faculdade. Especialmente agora que trabalho.... a maior parte do tempo não estou com os colegas de grupo.

A coisa da troca de ideias é muito porreira, mas chega a um ponto em que um tipo tem de ser capaz de trocar ideias, definir um plano e a partir dali evoluir em paralelo esse é o desempenho óptimo.O desempenho óptimo é sempre o objectivo de um engenheiro [coff por inferência do futuro engenheiro também] note-se: se este não tiver um comercial ás costas.


Fica a ideia dada. É muito simples de instalar e usar.

SERVER SIDE:
http://www.linux.ie/articles/tutorials/cvs.php

CLIENTES:
windows:
tortoise O interface é muito intuitivo e agradável
linux:
a propria linha de comandos para os amantes da consola
tkcvs está disponivel como pacote para o fedora. Será bom de verificar se não existirá também um para o vosso sabor preferido de linux.
cervisia provavelmente o ui mais divulgado. Eu não aprecio particularmente.

and that's all folks
Happy Coddings ;)