Долгий перерыв

Март 2nd, 2016 § 0 comments § Прямая ссылка

Давно ничего не писал. Как разработчик перешел на Ruby/Rails чем и доволен. С настальгией вспоминаю C#/Windows сейчас Ruby/Mac. Я надеюсь начну писать более глубокие технические статьи, т.к. большая часть всего тут написанного это заметки на полях.

Ubuntu настройка dante socks сервера

Июнь 17th, 2014 § 0 comments § Прямая ссылка

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

logoutput: stderr
internal: 127.0.0.1 port = 1080
external: wlan0
method: none
client pass { from: 127.0.0.0/8 port 1-65535 to: 0.0.0.0/0 }
pass { from: 0.0.0.0/0 to: 0.0.0.0/0 protocol: tcp udp }

Что тут происходит устанавливаем логирование в стандартный поток ошибок, принимаем входящие соеденения с локалхоста транслируем на интернет интерфейс у меня ноут и сижу как видно за вайфаем, если у вас “шнурок”, то вместо wlan0, будет ваш eth0 (или какой – то eth смотрите в ifconfig’е что у вас юзается). Дальше пробрасываем все входящее на все выходяшее. Авторизацию не исползуем. Настроек много и кому интересно, то смотрим официальную доку

Ставим dante

sudo apt-get install dante-server

Запускаем

sudo /etc/init.d/danted start

Используем Python c socks прокси

Июнь 17th, 2014 § 0 comments § Прямая ссылка

Нужно было разорабться как юзать socks proxy в Python и что бы можно было это делать многопоточно. В сети есть на этот счет не самая актуальная инфа, в силу того что тема специфична. Советуют юзать SocksiPy, оно древнее как гавно мамонта и уже давно не поддерживается (найдете скорее всего спсобо посавить через apt-get install), при попытки поставить через pip получете от ворот поворот, после не долгого гугления скорее всего найдете SocksPy-branch, будете радоваться, но радость не будет долгой т.к. не работает нормально (у меня сдохло при работе с юникодом). Выход из этой не самой лучшей картины, есть используюте либу neehi можно посавить через pip, это поддерживаемый наследник SocksiPy, в тех примерах где юзается неймспейс socks меняем на neehi и вуаля все заработает.

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

Полезные снипеты для работы с PostgreSQL

Май 17th, 2014 § 0 comments § Прямая ссылка

Так уже выходит что нужно соваиваться с PostgreSQL и что бы не искать каждый раз типовые вещи, буду собирать в одном месте.

Создать базу:

CREATE DATABASE 'Database'  WITH OWNER = postgres  ENCODING = 'UTF8'  LC_COLLATE = 'en_US.UTF-8'  LC_CTYPE = 'en_US.UTF-8' CONNECTION LIMIT = -1;

Создать пользователя:

CREATE USER MyUser WITH PASSWORD 'SuperStrongPasswordWichIcanRemember';

Назначить привелегии:

GRANT ALL PRIVILEGES ON DATABASE MyDatabase to MyUser;

Вывести все данные по базам:

\list

В PostgreSQL нет такой штуки как в MySQL USE DATABASE, тут когда ты подлючаешь к Постгресу ты подключаешься к конктреной базеданных, так что что бы свитчнуться на другую надо заного подключится.
Если есть другие способоы, то велкам в коменты.

Вывести всех пользователей:

\du

Показать все таблицы:

 \d_(без подчеркивания баг в хайлайтере, иначе режет символ)

Показать все колонки в таблице:

\d ur_table_name

Подробное описание таблицы

\d+ ur_table_name

Django мигрируем с MySQL на PostgreSQL

Май 17th, 2014 § 0 comments § Прямая ссылка

Уже “тыщу лет” ничего не писал. Времени нет, все время занимает кодинг и DotA (развеваю миф о том что пуляет только школота, ну или я еще не повзрослел). Активно проктикую Django последние несколько месяцев как стартовый проект пилю Heroes of the Storm во славу близов))) Опять к слову о взрослении, ну да ладно. Вообще раньше все было на олдскульном MySQL пока не словил легкий факап с юникодом. Думаю последний красный флажок, надо переходить на PostgreSQL. К слову на работе уже потихоньку переходим, вот и еще один повод. Встал вопрос как перенсти данные что уже были вбиты в MySQL об этом собственно и рассказ.

Первое что делаем ставим Постгрю и тут же первый подводный камень, не ставьте так

sudo apt-get install postgresql postgresql-contrib

Ибо хуйня – хуйня – хуйня выйдет!. Объясню почему, дело в том что пострег поставится, но не поднимется как сетевой сервер, он будет слушать Unix домейн сокет, это штука эмулирует сетевое взаимодействие, приэтом вся движуха происходит в рамках одной машины, один из unix way способов межпроцессорного взаимодействия (гуглить Unix domain socket). В итоге выполучете ошибку вида:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Думаю оно вам не надо. Если уж вам повезло, а вам скорее всего повезло, то делаем следующее и ставим PostgreSQL заново.

sudo apt-get remove --purge postgresql-9.1(тут будет та версия что у тебя стоит)

Дальше делаем

sudo apt-get install postgresql-9.1 (или любая конкретная)

Весь фокус в том что нужно указать конкретную версию PostgreSQL и все встанет на свои места, а не ставить тут всякие абстрактные Постгресы )))

Идем дальше. Теперь нужно создать юзера и базу в которой будем работать. PostgreSQL при установки создает пользователья Postgres и он наделен всеми нужными правами. Логинемся подним и
создаем что нужно

sudo -u postgres psql postgres
CREATE USER Morgan WITH PASSWORD 'SuperStrongPasswordWichIcanRemember';
CREATE DATABASE "SuperSecret"  WITH OWNER = Morgan  ENCODING = 'UTF8'  LC_COLLATE = 'en_US.UTF-8'  LC_CTYPE = 'en_US.UTF-8' CONNECTION LIMIT = -1;
GRANT ALL PRIVILEGES ON DATABASE SuperSecret to Morgan;

Вот таким не хитрым способом у нас почит все готово, не забывайте точку с запятой в конце а то вошебства не будет. Что делать дальше, нужно выгрузить все данные из базы MySQL
на помощь приходит Django с его командой:

./manage.py dumpdata my_json_dump.json

Тут данные будут выгруженны из БД в файл в json формате, если база большая придется подождать.
Дальше идем в settings.py и меняе конекшен стринги (не путать с женскими трусиками) с MySQL на PostgresSQL (это расписывать не буду, а то выйдет совсем для идиотов, а ты же не такой
верно!?)

./manage.py syncdb
./manage.py migrate
./manage.py loaddata my_json_dump.json

Тут я думаю что ты правильный пацан и пользуешь South для управлением миграциями в БД, но если нет то тогда migrate делать незачем.
Ты все сделал так но в консоль выввалилась тьма ошибок что -то типа

An exception occurred while loading data: duplicate key value violates unique constraint

Нужно почистить таблицу django_contetn_types при синхре туда заливаются данные, а когода ты пытаешься залить данные посредством loaddata то делаешь это дважды, что не хорошо так
что делай следующее

./manage.py dbshell
TRUNCATE django_content_type CASCADE;

Далее просто

./manage.py loaddata my_json_dump.json

Теперь должно все заработать, пора ссать кипятком и хвалить Django за пару простых движений, у тебя PostrgeSQL и все данные и ты не потратил пол дня писюкая свои говно срипты для переноса.
Если у тебя все получилось значит я потратил этот часок не зря.

Ubuntu ставим Sun JDK

Февраль 23rd, 2014 § 0 comments § Прямая ссылка

Понадобилось избавится от OpenJDK что бы встала InteliJ Idea Community Edition ))) он не очень то дружит с OpenJDK как я понял. Нашел очень простой способ как поставить через apt-get

Сначала уберем openJDK


sudo apt-get purge openjdk*

Потос ставим SunJDK


sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

Что бы прописать переменные окнружения можно поставить


sudo apt-get install oracle-java7-set-default

Когда надоест SunJDK его можно прибить


sudo apt-get remove oracle-java7-installer

Enjoy!

Давно ничего не писал

Февраль 22nd, 2014 § 0 comments § Прямая ссылка

Давно ничего не писал, можно сказать что даже подзабил, но сейчас появляется новый стимул. Взялся за изучение Python Django буду выкладывать свои шишки что бы вы их сами не допускали. Наверное первое с чего начну эту разворачивание Python + Django на боевом сервере.

Удалить все пробелы в строке

Декабрь 10th, 2012 § 0 comments § Прямая ссылка

Нашел один очень изящный способ решения данной задачи, делюсь.


void removeSpace(char *str) {
char *p1 = str, *p2 = str;
do
while (*p2 == ' ')
p2++;
while (*p1++ = *p2++);
}

Удалить из сторки все лишние пробелы

Декабрь 10th, 2012 § 0 comments § Прямая ссылка

Решил начать цикл постов, про алгоритмы и задачам, которые могут попасться на собеседовании. При желании все можно найти на просторах сети, но классно когда все лежит в одном месте. Так вот первая задачка, мне ее кстати задавали при поступлении в СПбАУ РАН на кафедру “математических и информационных технологий” к слову так и не поступил увы. Условие задачи.

Дана строка, удалить все лишние пробелы, под лишними будем иметь ввиду все пробелы в начале и в конце строки и более одного пробела внутри строки. Использовать еще одну строку запрещено. Ниже мое решение.


#include <stdio.h>
#include <string.h>
int main()
{
char* str = new char[128];
int len = sprintf(str,"  Some huge     string with                a lot multiple white spaces!!!   ");
if(len == 0)
return -1;

printf("%s\r\n",str);
bool isStart = true;

char* ptr = str;
int i = 0;
char previos = 'x'; //переменные надо инициализировать, а иначе может быть очень плохо )))
char* endPtr = &str[len - 1];
while(ptr != endPtr)
{
if(*endPtr == ' ')
{
endPtr--;
continue;
}

if(*ptr == ' ' && isStart)
{
*ptr++;
continue;
}

if(*ptr !=' ')
{
isStart = false;
}
if(previos == ' ' && *ptr == ' ')
{
*ptr++;
continue;
}

previos = *ptr;
str[i++] = *ptr++;
}

str[i++] = *endPtr; //тут записываем последний символ
str[i]='\0';
printf("%s\r\n",str);
getchar();
return 0;
}

Не забывайте, что sprintf deprecated здесь используется только для демонстрации примера. Если вы обнаружили не точность в примере, лучший способ решения или, что еще хуже ошибку, отпишите в коменты, что бы распространять знание, а не на оборот.

Портирование C# приложений на Mono

Сентябрь 29th, 2012 § 0 comments § Прямая ссылка

Переносил сегодня приложение на C#, которое активно работает с сетью на Mono, проверил совместимость с помощью Moma. Moma показала, что все окей, но приложение на Linux работало не корректно. После некоторого гугления выяснилось, что проблема в реализации работы с https, нужно явно указывать, что мы принимаем сертификат сервера. В функции инициализации нужно прописать.


System.Net.ServicePointManager.ServerCertificateValidationCallback+=delegate{
return true;
};

Профит.

Смотреть фильмы онлайн