2012-07-10

Обновил langs.cpage.ru

Последние несколько дней активно занимался разными улучшениями нового сервиса для изучения иностранных слов.

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

На сайте добавил новый словарь неправильных английских глаголов. Упростил добавление новых слов в словари.

 

Оставить комментарий

 
  2012-07-04

Сервис для изучения иностранных языков

Случилось так, что перед поездкой в Италию мне захотелось выучить, хотя бы чуть-чуть, итальянский язык. Для изучения иностранных языков сейчас есть множество различных программок, в том числе и те, что устанавливаются на мобильные телефон и когда, например, стоишь в очереди ты можешь учить иностранные слова, с пользой проводя время. Но, к сожалению, я не нашёл ни одной программы, которая позволяла бы, скажем, изучать неправильные глаголы, или скажем, для японского языка, изучать канзи и различные варианты их написания. Кроме этого, большинство таких программ или ориентированы только на работу с сайтом, либо только позволяют работать с фиксированными словарями без возможности редактировать сами словари. А ведь иногда бывает так - видишь незнакомое слово, хочется его добавить в программу и потом его периодически повторять. Поэтому, я задумал создать свой сервис для изучения иностранных языков, такой которой пригодился бы лично мне.

Несколько месяцев проектирования и, в-черне, прототип заработал. Пока это даже еще не бета, но основные функции уже реализованы. Проект пока не имеет постоянного адреса а живет на http://langs.cpage.ru/. Как только я придумаю как его обозвать сразу перенесу.

Что реализовано:

  • регистрация на сайте;
  • работа со словарями: возможность добавления, редактирования и удаления словарей;
  • работа с несколькими устройствами - пока это только телефоны на Android;
  • возможность скопировать словарь ближнего своего и работать как со своим;
  • поддержка нескольких форм перевода;
  • возможность учить неправильные глаголы;
  • возможность учить варианты произношения канзей японского языка;
  • самое главное: двусторонняя синхронизация между сайтом и мобильным клиентом;
  • создан мобильный клиент под Андроид;

Что планируется:

  • Большая работа по улучшению эргономики сайта и клиента
  • Перевод сайта на несколько языков
  • Создание клиентов под iOS и WP а также клиентов для Windows и Linux

Вот пока и всё. Всем кому интересно предлагаю протестировать сервис. Сначала нужно зарегистрироваться, скачать мобильный клиент на телефон (пока только под Android 2.2). В маркете его пока нет. Все фичреквесты можно писать в комментарии к этой записи, обязательно постараюсь учесть любые пожелания. Ну и критика приветствуется.

 

Оставить комментарий

 
  2012-05-05

MySQL сервер ушёл гулять

Иногда на сервере происходят сошибки типа "mysql server has gone away". Ошибка весьма досадная тем, что возникает она не всегда а только иногда. При этом, путем эмпирических действий удалось выяснить, что такое сообщение вызывается если PHP скрипт какое то время чем то сильно был занят и при этом не обращается к базе данных. Когда после некоторго периода бездействия скрипт, наконец хочет что-либо записать в базу данных то обнаруживается, что ссылка на соединение с базой данных уже мертва и все последующие запросы вылетают с ошибкой "mysql server has gone away". Понятно, что соединение с базой данных рвется по некоему таймауту, но вот по какому и как его увеличить?

Оказалось, что дело в переменной wait_timeout которая живет в /etc/my.conf. В моем случае она оказалась установленной в 30 секунд, поэтому, если во время выполнения скрипта между запросами оказывается промежуток более тридцати секунд - соединение рвется и больше не восстанавливается.

Изменить это значение можно либо поправив my.conf,  либо после установления соединения выполнив "SET wait_timeout=1000".

 

Коментариев: 1

 
  2012-02-29

VML в IE8

Заметил, что моя векторная библиотечка не хочет работать в восьмом эксплорере. При этом в Интернете вообще мало примеров работы VML которые бы оставались работоспособными в этом замечательном браузере. Даже на сайте Microsoft примеры VML которые прекрасно работали в шестой и седьмой версии напрочь отказываются работать в восьмерке.

При этом, вроде бы, иногда, что-то как-то работает в режиме совместимости, но не всегда, и только при определенных условиях типа наличия или отсутствия DOCTYPE и даже версии Service Pack.

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

И вот когда я уже почти собрался переделать код на вывод VML в отдельном iframe который бы работал только в режиме совместимости, я нашел код который работает всегда и всезде во всех режимах - это оказался все тот же raphael. Дмитрий Барановский нашел способ обуздать IE8 - весьма неочевидным и почти магическим способом он заставил это всё работать как надо.

Обновлил свой пример для работы c VML.

 

Оставить комментарий

 
  2012-01-14

Интересная JavaScript библиотека

Набрёл на интересную бублиотечку для создания простых трехмерных визуализаций с использованием VML. Как следстивие использовазония VML работает это только в Internet Explorer. Интересно, можно ли малой кровью сделать для неё SVG реализацию чтобы она стала полностью кроссбраузерной?

 

Оставить комментарий

 
  2012-01-05

Фракталы на JavaScript, продолжение

После того, как фрактал в примере получился ну архи ме-е-е-е-е-дленным, решил немного исправить ситуацию. Все дело в том, что данную программку я написал как демо для объекта z.Canvas из z.Tools а z.Canvas - это на самом деле хелпер, который рисует графические примитивы при при помощи SVG и VML в зависимости от того, что доступно в текущем браезере. Идея была сделать именно холст, на котором можно было бы рисовать и в Internet Explorer и во всех остальных браузерах, ведь IE, как известно, до девятой версии не поддерживает SVG. Как следствие, каждый примитив на этом "холсте" будет занимать память, и если нарисовать фрактал из прямоугольников на холсте 300 на 300 пикселей, то компьютеру придется выделить память для девяносто тысяч маленьких объектов, само по себе это не сильно много, но всё равно, значительно тормозит весь процесс.

Переделать это дело на "настоящий" HTML5 canvas было делом нескольких минут, вот она, версия на Canvas, работает значительно быстрее и уже не жрет большого количества памяти.

Уже выложив, придумал, как ещё немного ускорить процесс рисования - сейчас, каждая точка рисуется в отдельном потоке через setTimeOut а это тоже страшно медленно - если делать без setTimeout процесс "подвиснет" пока не завершится рассчет фрактала, но можно сделать, чтобы рисовалась не точка но целая линия - это ускорит весь процесс без "зависания" процесса рисования.

 

Оставить комментарий

 
  2012-01-03

Фракталы на Javascript

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

 

Коментариев: 3

 
  2011-10-14

Как найти расстояние между двумя GPS точками

Понадобилось посчитать дистанцию между двумя точками заданными в GPS координатах. В PHP реализация такой фунции выглядит следующим образом:

function calcMiles ($Lat1, $Lon1, $Lat2, $Lon2){
    return 3958.75 * acos(  sin($Lat1/57.2958) * sin($Lat2/57.2958) + cos($Lat1/57.2958) * cos($Lat2/57.2958) * cos($Lon2/57.2958 - $Lon1/57.2958));
}

Ответ получается в милях, для перевода в метры, полученное значение нужно ещё умножить на 1609.344.

Код взял с phpclasses.com. Кстати, глядя на код оригинального класса можно сделать вывод, что автор обладает хорошим чувством юмора - он реализовал вывод результата в десятках различных единиц, включая нанометры, парсеки и световые года.

 

Оставить комментарий

 
  2011-10-09

Текстовый редактор под Android

Выходные провёл с пользой - сделал ещё один простейший текстовый редактор, на этот раз под Андроид. Конечно, уже существует огромное множество готовых редакторов, но мне захотелось создать свой, ведь лучший способ научиться что-либо делать — делать самому. Собственно, идея сделать текстовый редактор появилась после того как я снёс с телефона Ted - работает весьма странно, иногда ни с того ни с сего портит кодировку файла а при сохранении постоянно спрашивает имя сохраняемого файла - это меня сильно достало, ведь сохраняюсь я постоянно, хотя, в целом ted — не плохой редактор.

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

Большое спасибо Александру Понамарёву за классный диалог выбора файлов, без него у меня бы ушло гораздо больше времени.

Ссылка на apk файл.

 

Оставить комментарий

 
  2011-09-29

PCRE поддерживает Posix литералы

Я уже писал, что нужно сделать, чтобы заменить в коде Posix регулярные выражения, которые в PHP 5.3 стали deprecated, на Perl совместимые. Оказывается Rerl совместимые регулярные выражения поддерживают литералы используемые в Posix такие как [[:allnum:]], [[:space:]] и т.д. В одном месте чужёго кода заметил это, и вот дошли руки проверить на практике: конструкция вида preg_match('/[[:space:]]/','df d') работает идентично конструкции вида preg_match('/\s/','df d') т.е. совсем не нужно при замене ereg на preg_match заменять еще и литералы, достаточно добавить слева и справа слеши "/". Кстати кроме слешей можно использовать любой другой символ, например "#" это полезно когда в регулярном выражении уже есть слеши - чтобы их не экранировать и не ухудшать читаемость кода.

 

Оставить комментарий