html5 input file fakepath

Category: dev frontend

Если у вас возникла проблема с тем что в поле input type=file, вместо нормального значения выставляется c:\fakepath\your_kewl_filename , вы должны помнить следующее

According to the specifications of HTML5, a file upload control should not reveal the real local path to the file you have selected, if you manipulate its value string with JavaScript. Instead, the string that is returned by the script, which handles the file information is C:\fakepath.

This requirement is already implemented in Internet Explorer 8 – the real path to the file will be shown only if the page that contains the control is added to the trusted sites collection of the browser.

Обращая внимание на спецификацию ХТМЛ5 инпут загрузки файлов недолжен указывать на реальный путь к файлу в системе который вы выбрали, вместо этого в javascript будет попадать значение C:\fakepath.

Это обязательство уже реализовано в IE8, но кому какое дело, главное чтоб в Chrome точно такая же история.

Hudson Git and SSH keys

Category: howto dev

Установка Hudson на Ubuntu с Git + доступом по ssh-key

Скачиваем native-package с сайта Hudson

$ sudo dpkg -i hudson.deb
```

Система начнет ругатся на зависимости и прекратит установку, чотбы установить все зависимости нужно запустить следующее

$ apt-get -f install 

После чего hudson готов к использованию на :8080 порту.

Для работы с Gitом по ключам необходимо эти ключи сгенерировать, заходим от ползователя hudson

$ sudo su hudson

Генерируем ключи

$ ssh-keygen -t rsa

После чего соответсвенно кладем эти ключи к себе в кофниг gitosis в директориб keydir и соотвествено добавляем разарещения в gitosis.conf После push в gitosis-admin можно создавать в hudson проект и указывать URL репозитория, - все должно работать.

Reset SMC

Category: howto mac

Что делать если macbook не включается ?

Не спешите нести его в ремонт, часто у маков бывает проблема с зависанием System Managment Controller (SMC). Симптомы были такие, я послал OSX в Sleep mode softwareным способом через главное меню. После чего закрыл крышку ноутбука и выдернул шнур питания. Когда я захотел включить его я просто поднял крышку и ничего не произошло, при этом когда я закрывал его обратно начинал работать кулер так что его было слышно, с открытой крышкой ноутбук работала клавиатура об этом я смог понять потомучто горел индикатор Caps Lock. После ряда попыток понажимать на кнопки я понял что нужно сделать что-то осмысленое, и вот что я сделал:

Сброс SMC для Macbook или MacBook Pro с отключаемой батареей

  • выключить компьютер
  • отключить шнур питания и держать кнопку Power 10 секунд
  • отпустить power подключить батарею и шнур питания
  • включить Mac

Сброс SMC для Macbook и Macbook Pro с встроенной батареей

  • Выключить
  • Подключить адаптер питания
  • Вместе нажать клавиши Shift+Control+Option и кнопку Power
  • Отпустить клавиши
  • Запустить Mac как обычно

Сброс SMC для iMac, Mac Pro, Mac Mini

  • Выключить
  • Отключить шнур питания
  • Нажать и держать кнопку Power 5 секунд
  • Отпустить
  • Подклчить шнур питания и запустить как обычно

Решение проблемы медленого wifi на Ubuntu

Category: howto linux

Симптомы проблемы: в 11.04 При подключении к инетернету медленно или вообше не работает соединение, при этом выделяется IP и с виду все должно быть нормально и без ошибок.

Решение: Убрать режим 11n

sudo modprobe iwlagn 11n_disable=1

gksudo gedit /etc/modprobe.d/iwlagn-disable11n.conf

options iwlagn 11n_disable=1

в 12.04 после обновления модуль стал называтся iwlwifi соотвественно решение будет выглядить так

sudo modprobe iwlwifi 11n_disable=1

gksudo gedit /etc/modprobe.d/iwlagn-disable11n.conf

options iwlwifi 11n_disable=1

Кроме того для некоторых срабатывает решение:

в файле /etc/nsswitch.conf

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

заменить на

hosts:          files dns

Mongohub клиент для mongodb

Category: tools

Клиент под OSX для MongoDB - MongoHub

MongoHub logo

MongoHub это менеджер mongo баз данных. Он позволяет полностью управлять базами и структурами
mongo.

  • Нативное приложение на Cocoa
  • Прямой доступ как к локальным так и удаленным узлам mongo
  • Открытй код можно найти на github

Ниже немного скринов, ну и ссылка на офф сайт чуть выше

Perl one liner

Category: perl
perl -ne 'm/^([^#][^\s=]+)\s*(=.*|)/ && printf("%-35s%s\n", $1, $2)'

PostgreSQL recursive procedure

Category: postgresql
WITH RECURSIVE supplytree AS
 
(SELECT id, username, parent_user_id, CAST(username AS VARCHAR(1000)) AS username_fullname
FROM users
WHERE parent_user_id =1 
UNION ALL
SELECT si.id, si.username,
        si.parent_user_id,
        CAST(sp.username_fullname || '->' || si.username AS VARCHAR(1000)) AS username_fullname
FROM users AS si
        INNER JOIN supplytree AS sp
        ON (si.parent_user_id = sp.id)
)
SELECT id, username_fullname
FROM supplytree
ORDER BY username_fullname;

На выходе получим:

 id | username 
 1  | user1
 2  | user1->user2
 3  | user1->user2->user3
 4  | user1->user2

Python differential

Category: python math
#!/usr/bin/python from scipy import linspace, array from scipy.integrate import odeint,ode from pylab import plot, show import matplotlib.pyplot as plt from numpy import arange import random as rand def dotu(r,t0): x,y = r d = [0,1] d[0] = y d[1] = x-x**2-y return d def dplot(s, color="green"): t = linspace(0,55, 700) print t u=odeint(dotu,s,t) u=array(u).transpose() plot(u[0], u[1], color) for x in arange(-1.52,2, 0.25): print x dplot([x,3]) plt.grid(True) show()

Дифференциальные исчесления в python реализовываются с помощью библиотек:

http://www.scipy.org/
http://ru.wikipedia.org/wiki/SciPy

http://numpy.scipy.org/
http://ru.wikipedia.org/wiki/NumPy

Графки рисуются с помощью http://matplotlib.sourceforge.net/

Но не всё так гладко, возможно в новых версиях уже поправлены выявленные баги, но в том ч то использовалось в примере были ошибки вычисления ODE решателей которые приводили к остановке программы и соотвественно нелзя было нарисовать график, из за этого пришлось использовать другие платформы.

Все баги к этому моменту починили...

Antitrust - спецэффекты в фильмах про программистов

Category: old fun

Все наверно смотрели этот фильм Antitrust, в русской локализации "Программист", дык вот в этом фильме главный герой Майло Хоффман (Milo Hoffman) со своими друзьями по сюжету весь фильм пытается скомпилировать пример из документации по Java на сайте Sun : WebServer.java именно этот файл фигурирует в сценах с монитором. Снимки и продолжение под катом...

Скриншоты кода - три разных сцены

void listDirectory(File dir, PrintStream ps) throws IOException {
        ps.println("
\n");
        ps.println("Parent Directory
\n");
        String[] list = dir.list();
        for (int i = 0; list != null && i < list.length; i++) {
            File f = new File(dir, list[i]);
            if (f.isDirectory()) {
                ps.println(""+list[i]+"/
");
            } else {
                ps.println(""+list[i]+"


" + (new Date()) + "");
    }



 /* are we doing a GET or just a HEAD */
            boolean doingGet;
            /* beginning of file name */
            int index;
            if (buf[0] == (byte)'G' &&
                buf[1] == (byte)'E' &&
                buf[2] == (byte)'T' &&
                buf[3] == (byte)' ') {
                doingGet = true;
                index = 4;
            } else if (buf[0] == (byte)'H' &&
                       buf[1] == (byte)'E' &&
                       buf[2] == (byte)'A' &&
                       buf[3] == (byte)'D' &&
                       buf[4] == (byte)' ') {
                doingGet = false;
                index = 5;
            } else {
                /* we don't support this method */
                ps.print("HTTP/1.0 " + HTTP_BAD_METHOD +
                           " unsupported method type: ");
                ps.write(buf, 0, 5);
                ps.write(EOL);
                ps.flush();
                s.close();
                return;
            }



Обьяснения под катом