Июн 162014
 

Все, что будет описано в данном посте, является опытом, через который я прошел сам, когда решил откатить систему. Из всего опыта работы с Developer Preview могу сказать только одно: никогда не ставьте ее взамен своей основной ОС, используйте дополнительный раздел. Если же вы все-таки сглупили и поставили новую ОСь поверх, то вот моя инструкция по откату. Continue reading »

Апр 052014
 

Одним из первых постов в данном блоге был пост с дампером MessageDump, датированный 4 января 2012. С тех пор в ВК произошло множество изменений, которые затронули как и функциональную, так и техническую часть ВКонтакте, что повлекло за собой полную неработоспособность старой версией. Тем не менее, его актуальность не потерялась, поэтому обновить его было бы логичным ходом.

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

Работа дампера осталось неизменной, через API, авторизация проводится с помощью access_token. Как его добывать — дело ваше, пост не посвящен этому.

Из скрипта был выпилен весь второстепенный функционал типа зипования результата, вывода диалогов в упрощенном формате, зато были добавлены следующие фичи:

  • Разделение большой истории на мелкие файлы.
  • Поддержка всех видов прикреплений (аудио, видео, подарки, фото).
  • Поддержка пересланных сообщений.
  • Сохранение изображений отдельно от диалога
  • Разделение диалогов по папкам и полу.

В общем работа проведена колоссальная, спасибо Диме за это.

Скачать скрипт можно по ссылке: версия 2.0.1: dumper2_01.zip (208 кб).

P.S. Помните о том, что хранение переписки как минимум аморально, а ее распространение — уголовно наказуемо. Будьте верными тем, кто вам дорог.

Дек 122013
 

Привет.
Недавно для статистики потребовалось определить страны по городу. В результате был собрана БД и написан класс-обертка, который осуществляет поиск по данным.
В базе 243 страны и 54,912 города, в большинстве случаев этого хватает.
Сама БД представляет из себя один JSON файл весом в 4.7 мб, класс-обертка — пару функций для быстрого поиска.
Описание функций:

array GetCountryNames ( [bool $isRussian = true] )
Возвращает массив названий всех стран, содержащихся в БД. 
$isRussian - отдавать названия на русском языке.
 
array GetCountryCodes ( void ) 
Возвращает массив всех кодов стран.
 
string GetCountryCodeByCityName ( string $city )
Возвращает код страны по названию одного из ее городов.
$city - название города (на английском или русском языке). Может быть регулярным выражением.
 
array GetCitiesByCountryCode ( string $code [, bool $isRussian = true] )
Возвращает массив названий всех городов, которые есть в данной стране.
$code - код страны.
$isRussian - отдавать названия на русском языке.
 
string GetCountryNameByCountryCode ( string $code [, bool $isRussian = true] )
Возвращает название страны по ее коду.
$code - код страны.
$isRussian - отдавать название на русском языке.
 
string GetCountryCodeByCountryName ( string $country )
Возвращает код страны по ее названию.
$country - название страны (на английском или русском языке). Может быть регулярным выражением.

Пример использования:

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
<?php
require('countrydetect.class.php');
$countryDetect = new CountryDetect('db.json');
$countryCode = $countryDetect->GetCountryCodeByCityName('Лаппеэнранта');
if($countryCode !== 'UNKNOWN')
{
	echo sprintf('Страна: %s (%s) (%s)', $countryDetect->GetCountryNameByCountryCode($countryCode), 
					     $countryDetect->GetCountryNameByCountryCode($countryCode, false), 
					     $countryCode);
        // Страна: Финляндия (Finland) (FI)
}
 
var_dump($countryDetect->GetCitiesByCountryCode($countryCode, false));
/*
array(216) {
  [0]=>
  string(8) "Helsinki"
  [1]=>
  string(6) "Vantaa"
  [2]=>
  string(5) "Espoo"
  [3]=>
  string(5) "Lohja"
  [4]=>
  string(6) "Raisio"
  [5]=>
  string(7) "Tampere"
...
*/

Скачать класс + БД: countrydetect.zip (718 кб)

Ноя 222013
 

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

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
#!/bin/bash
# blog.bafoed.ru
args=("[email protected]")
table_name=${args[0]}
filename=${args[1]}
if [ -z "${table_name}" ] || [ -z "${filename}" ]
then
	echo "Usage: table_export.sh <table_name_to_export> <sql_dump_filename>"
	exit 0
fi
 
 
readarray tables < <(grep -n "Table structure" $filename)
i=0
start=""
end=""
for line in "${tables[@]}"; 
do
	if [ ! -z "${start}" ];
	then
		[[ "$line" =~ ([0-9]*)\: ]]
		end=${BASH_REMATCH[1]}
		break
	fi
 
	if [[ "$line" == *"\`${table_name}\`"* ]];
	then 
		[[ "$line" =~ ([0-9]*)\: ]]
		start=${BASH_REMATCH[1]}
	fi
	(( i++ ))
done
 
if [ -z "${start}" ];
then
	echo "Can't find table ${table_name} in ${filename}"
	exit 0;
fi
 
if [ -z "${end}" ]; 
then
	end="$(cat $filename | wc -l)"
fi
 
 
`sed -n ${start},${end}p ${filename} > ${table_name}.sql`
echo "See ${table_name}.sql"

Использование: table_export.sh <table_name_to_export> <sql_dump_filename>
Например: ./table_export.sh users pbkp_MySQL_db.sql

Может быть с багами, но с моим дампами сработал нормально.

Май 262013
 

Привет всем.
Официальные продажи браслета Jawbone UP в России еще не начались, но, к счастью, интернет-магазины не учитывают это, особенно когда отправка производится на адрес в США. В данный момент устройство находится уже у меня, поэтому выкладываю его обзор, чтобы рассказать вы сами решили, нужен он вам или нет. Continue reading »

Май 122013
 

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

Continue reading »

Апр 192013
 

Привет.
Этот пост не несет в себе ничего нового, просто делюсь простым скриптом.
Скрипт предназначен для генерации кода из аргументов в строке запуска cURL. Для чего это нужно? Для ускорения написания некоторых программ, которые активно работают с интернетом.

Continue reading »

Фев 272013
 

Всем привет.
После статьи о взломе клавогонок, множество людей стало задавать мне вопрос: как установить OS X на компьютер?. Сразу хочу сказать, что универсальной инструкции в данном посте не будет, будет лишь краткий мануал. Инструкции не будет не потому что мне лень ее писать, а потому что каждая установка — уникальна, и зависит от используемого вами железа. При установке вы со 100% вероятностью столкнетесь с проблемами, я их все проходил, и могу отметить, что не жалею и результатом очень доволен.
Continue reading »

Янв 212013
 

Приветствую всех.
Как и обещал, делаю обзор iPhone 5, хоть их и так великое множество. Чтобы придать хоть какую-то особенность, я постараюсь вести этот обзор не с точки зрения специализированных сайтов с обзорами мобильных устройств, а исходя из личного опыта использования. Разумеется, как обычно, каждое слово этого обзора проплачено корпорацией Apple, а деньги мне передал при личной встрече сам Тим Кук.

Статья предназначена для тех, кто хотя бы имеет представление о компании Apple и ее продукции.
Continue reading »