Устанавливая новое SDK для Google App Engine подумал о кроссплатформенности. Для себя решил что кроссплатформенность это:

 

  • для пользователя: везде и на всех компьютерах вeсь необходимый ему софт выглядит и работает одинаково;
  • для разработчика: код в любой среде компилируется с одними и теми же ключами для компилятора.

 


 

Регистрация началась немного раньше 9:00, т.к. уже в 8:30 у входа уже набралось такое количество людей, что уже все не помещались в вестибюле. При регистрации дали расписание докладов и немного спонсорской рекламы. Получил в гардеробе жетончик с номером “1” :).

10:00. Все ждут начала ивента, которое будет на 15 минут позже рннее заявленного времени. Есть весплатный wi-fi. В зале людй достаточно много, но всё-равно осталось много бейджиков для зарегистрированных участников.

10:02. Макс Ищенко со вступительным словом. Коротко, пости без рекламаы

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

Докладчик из Рамблера. Должо быть интересно. Питон сравнивается с С. Как можно? Теперь я знаю что С очень быстрый, а питон 2.6 быстрее 2.5. Пару месяцев назад в журнале Хакер была статья на это тему. Кажется, много общего. Не помню сейчас.  Оптимизпция кода на питоне такой, как она была представлена в докладе – действительно ли такая актуальная тема для pycamp? IMHO, не самый удачный доклад.

Второй доклад. Рецепты декораторов.

Было интересно, но коротко. Хотя и не знаю что можно было рассказывать про этой теме дольше 15-ти мунут. Порадовало, что докладчик хорошо разбирался в теме доклада, отвечал на вопросы.

Третий доклад. Программирование на нервах.

Первое, что бросилось в глаза - никакого отношени к Python! Доклад, скорее всего, получился не как доклад, а как рассказ об личном опыте одного PM'а. Объективно сложно судить, т.к. я не согласен практически ни с чем, о чём говорилось. Автору доклада нужны не живие люди, а роботы, которые тупо, без эмоций выполняют свою работу. 

Четвертый доклад. Работа с хранилищем данных в Google App Engine, отличия от реляционной модели.

Ожидал больше технических подробностей. Все было слишком поверхностно и легко находилось в документации. Во время доклада задавал себе вопрос: "Зачем я здесь? Всё это можно прочитать в документации к GAE". Еще, imho, раз уж тема была сформулирована так, можно было бы немного больше уделить времени memcache. После доклада осталось много вопросов, которые многие задавали в перервыве докладчику. Я решил уж лучше почитаю документацию.

Пятый доклад. Redis: Дикий Запад баз данных.

Наверное, это было лучшее, что я услышал на pycamp. Отличный доклад. Хорошо подготовленный о понимающий о чём идёт речь докладчик. После доклада С первых минут доклада хотелось попробовать всё, о чем говорил докладчик. Вскоре, напишу пост об это БД.

Дальше был обед. По некоторым причинам, одна из которой - не очень хорошая подготовка докладов, решил не слушать остальные, хотя, было бы интересно послушать "Расширение и встраивание Python". Буду ждать видео. Почему-то, как только первый раз увидел тему докладов, сразу же не захотелось слешать "PyCharm – новая python IDE от JetBrains". IDE - хорошая, но лучше посмотреть вебкасты. IMHO.

Что касается организации конференции, то всё было на достаточно хорошем уровне. Кроме, как уже многие выссказались, самих докладов и слайдов к ним. Иногда возникало ощущение, что доклады готовились ночью перед pycamp.


 


30 января - PyCamp Kyiv

Published 1/6/2010 by e0ne in Python
Tags: ,

30 января в Киеве пройдёт PyCamp. Вчера стал доступен список докладов, хотя и не полный. Не то, чтобы меня заинтересовали все темы, но всё-равно поеду. Надеюсь на то, что оранизация кампа пройдёт на достойном уровне и я не пожалею о зря потраченном времени.


Случилось так, что на работе попросили составить список из того, что нужно почитать/скачать/установить студентам, которые хотят писать на всеми любимом языке программирования C#. Решили, что раз они (студенты) этим интересуются, то вопрос "а оно нам(им) надо пропускаем.

Для начала начала необходимо установить сам .NET framework и какуе-то IDE. C IDE вариантов не много: или бесплатные express версии (http://www.microsoft.com/exPress/), или trial полнофункциональной Visual Studio (http://www.microsoft.com/visualstudio/en-us/default.mspx). Что дальше делать с триальной версией - каждый решает сам, но для студентов полно всяких програм, где можно получить всё это бессплатно и, главное, легально.

При установки Visual Studio рекомендую сразу поставить SQL Server Express Edition (http://www.microsoft.com/express/sql/default.aspx), т.к. я с трудом представляю какое более-менее большое приложение может работать без базы данных.

Из-за того, что упор делается на web-разработку, разу ставим Microsoft Web Platform Installer (http://www.microsoft.com/web/downloads/platform.aspx) - в нем уже есть всё нужное для разработки на платформе ASP.NET.

Всё установили, настроили - теперь можно писать свою первую (или не первую) программу на .NET. Вот только ещё не известно как писать! Предлагаю список литературы.

On-line сточники:

  • MSDN (Microsoft Developers Network): http://msdn.microsoft.com/en-us/default.aspx или русская версия http://msdn.microsoft.com/ru-ru/default.aspx. Там действительно есть всё, но использовать его в качестве учебника трудно и неудобно.
  • http://www.asp.net/learn/ - много разного обучающего видео, демонстрирующего возможности ASP.NET. К каждому ролику можно скачать исходный код проекта, на случай, если что-то не получается. Только не стоит увлекаться: там показывают только самые(!) простые вещи, которые в больших приложения требуют хорошей обработки напильником.
  • http://www.asp.net/community/projects/ - Starter Kits – готовые приложения с исходниками. Не знаю что ещё можно об этом сказать. Очень полезная вещь.
  • Всевозможные блоги, форумы, сообщества. Их сейчас очень много, т.ч. я не считаю что нужно их сдесть перечислять, всё-равно кому-то что-то не понравится.
  • ...
Книги:
  • Эндрю Троелсен. Язык программирования С# 2008 и платформа .NET 3.5 - своеобразный букварь по C#. Многие рекомендуют начинать именно с него.
  • Книги по ASP.NET от Дино Эспозито - у него несклько книг, ориентированных на разный уровень читателей, каждый может выбрать себе книгу "по душе".
  • Джеффри Рихтер. CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C# - отличнай книга, обязательна к прочтению каждым разработчиком, который пишет на .NET. Только я очень не(!) рекомендую начинать именно с неё. У меня было "тяжелое детство": начинал с Рихтера, поэтому пришлось читать 2 или 3 раза, чтобы понять о чём он пишет.
  • ...
Для начала, наверное хватит. To be continued...

 


Первая попытка установить PostgreSQL на MacOS X потерпела крах. Пошел читать readme:

 

Вспомнились танцы с бубном в MS Dos, чтоб тот увидел больше 640К оперативной памяти, работа с extension memory (привет Паскалю). А чего стоит знаменитая фраза одного известного всем человека, о том, что нам таки хватит 640К ОЗУ. А ностальгия скорее не о ДОСе, а о том, как раньше писал код (некоторые и сейчас так пишут): оптимизировали память так, чтоб лишнего байта не занимало. А как доставалось тогда Windows'у? Лишние лишние файлы, процессы, записи в реестре дезжалостно удалялись для прибавления 1-2 мегабайт свободной оперативной памяти и нескольких десятков мег на винте. А сейчас словил OutOfMemoryException, когда процесс IIS'а в виртуалке начал есть более одного гига... Завтра буду искать memory leaks...

 

P.S. Интересный пост в тему DOS & .NET http://www.codeproject.com/KB/cs/ExpressionCompiler86.aspx


jQuery 1.4 Alfa 1

Published 12/7/2009 by e0ne in Web Development

Несколько дней назад вышла новая версия популярного JavaScript framework'а jQuery, пока только альфа, которую сами разработчики не рекомендуют использовать в production. Официальная информация на блоге http://blog.jquery.com/2009/12/04/jquery-14-alpha-1-released, а я расскажу о своих первых впечатлениях по сравнению с последней стабильной версией 1.3.2.

Для начала сравним размеры файлов:

jquery-1.3.2.js jquery-1.3.2.min.js jquery-1.4a1.js jquery-1.4a1.min.js
117 KB 55 KB 144 KB

87 KB

Видем что размер вырос, примерно, на 30 килобайт. Много это или мало - судите сами.

Пока в целях тестирования подключил библиотеку к двум проектам, где jQuery спользуется не так активно, но, в моём случае, вся функциональнось работает как и работала, ничего не поламалось, плагины успешно работают. Сравнивать производительность с ранней считаю нецелесообразным, т.к. к релизу, а то и к следующим версиям всё может поменяться как в лучшую, так и худшую стороны.


Прошло два года...

Published 12/4/2009 by e0ne in Blog

В прошлом месяце болгу исполнилось 2 года. За это время поменялось 3 хостинга, 2 движка блога (после переезда с blogspot.com был выбран BlogEngine.NET). Сейчас свотрю всё больше в сторону WordPress, который написан на нелюбимом мной PHP, но не такой сырой, как движки на .NET или Python. Или прийдётся таки дописывать самостоятельно нужную функциональность к BlogEngine, но на это нужно время. Также изменился вид RSS-ленты: теперь в ней виден весь пост.

Немного статистики за 2 года:

Данные BlogEngine:

 

  • 73 поста;
  • 138 комментириев;
  • 52 оценки за пост.
Данные FeedBurner:
  • 85 подписчиков;
  • 41 604 просмотра;
  • 10 525 перехода на сайт с RSS-ленты.
Данные Google Analytics (статистика работала не с самого начала, а, иногда, совсем не работала):
  • 8 999 заходов на сайт из 62-х стран;
  • 24 732 просмотров страниц;
  • на сайт попадали:

 

С переездом на новую версию движка поменял тему, которую ещё надо доработать напильником, почистил коментарии от спама, заработаль email-уведомления о новых коментариях. В ближайшее время добавлю капчу, т.к. спам надоел.

Что каксается содержания блога, то ничего конкретного сказать не могу. Конечно, хочется писать больше постов, но не всегда есть такая возможность. В ближайшее время будет больше постов о Pytnon: как о IronPython, та о CPython.


Почему-то, всегда забываю синтаксис вызова script service/method. Руки так и тянуться написать:

var result = ScriptServiceExample.AsmxService.Hello;
или
var result = ScriptServiceExample.AsmxService.Hello();

И каждый раз, после написания такого когда приходится лезть в MSDN/Google чтобы понять почему же оно не работает. После прочтения документации становится понятно "как" нужно писать вызов метода, но вопрос "почему" ответ, как правило, находится не сразу. Чтобы понять почему же всё работает именно так, достаточно посмотреть JavaScript код, который генерируется службой. Посмотреть это можно зайдя по адресу http://localhost:65456/AsmxService.asmx/js и сохранив себе js-файл следующего содержания:

Type.registerNamespace('ScriptServiceExample');
ScriptServiceExample.AsmxService=function() {
ScriptServiceExample.AsmxService.initializeBase(this);
// ...
Hello:function(succeededCallback, failedCallback, userContext) {
return this._invoke(this._get_path(), 'Hello',false,{},succeededCallback,failedCallback,userContext); }}
// ...

С WFC AJAX-enabled службами всё работает также.

 

ScriptServiceExample.rar (7.44 kb)


Всё началось с того, что на один из тестовых серверов поставили 64-х битную ОС. Особых проблем это не вызвало, за исключением того, что обна из сборок использует COM -объекты и появилась необходимость её сборки для платформы x86. Вот сдесь уже начали появляться первые подводные камни.

Первым делом я в свойствах проекта поменял свойство Platform Target (посже оказалось что это нужно сделать для всех проектов в solution):

 

 
Но после этих изменений ошибка "Can not load assembly ..." не пропала.  Следующим шагом пошел смотреть свойства solution и...
 
 
... и, с удивлением, обнаружил, что в качестве Target Platform для всех проектов стоит "Any CPU", вместо необходимого "x86". Пришлось идти в Configuration Manager и создавать ноую платформу для текущего solution.
 
 
Но и после всех этих танцев с бубном сайт не заработал. Тут я решил заглянуть в настройки IIS, попутно вспониная создателей Microsoft, .NET и их родственников: и это вы называете кроссплатформенной средой? Здесь меня тоже ждал сюрприз в качестве одного из параметров Application Pool'а, а именно - Enable 32-Bitt Applications, который, по умолчанию, чтоб его конечно же равен False.
 
 
Хорошо что хоть это помогло, иначе я уже был готов перустанавливать Windows и/или избавляться от старой библиотеки, которая использует COM(в нашем случае можно обойтись без этого).
 
P.S. Немного оффтопа. Стало интересно, как это всё сможет работать на x64 системах, который вовсю сейчас продвигаются Microsoft. Ещё интересно где обещанная мультиплатформенность .NET? IMHO, считаю что её нет она находится в зачаточном состоянии, т.к. всё ещё можно скомнилить сборку толоько под x86 или x64. Понимаю, что это делалось только для "нормального" запуска exe-файлов, но зачем же это было делать такой ценой?

PlatrormTestWeb.zip (10.01 kb)


Все же знают (или не все?), что .net, по умолчанию, хранит строки в юникоде. Так почему же  я во всех примерах вижу такой код?

 

byte[] byteArray = GetBytes();
var retval = Encoding.ASCII.GetString(byteArray);

 

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

 

"\u0000"\u0000a\u0000"\u0000:\u00002\u00000...." 

 

Тогда все начинают громко ругаться и рвать на себе волосы со словами: "Ну ведь работало же! Да и вот в этом(http://www.google.com.ua/search?rlz=1C1GGLS_enUA335US335&sourceid=chrome&ie=UTF-8&q=c%23+byte+array+to+string) примере так написано!".

Хорошо, если мысль о неправильной кодировке прийдёт сразу, а если нет... Сколько времени/нервов потритит разработчик, прежде чем всё станит на свои места?

вышеприведённый пример лучше заменить на:

byte[] byteArray = GetBytes();
var retval = Encoding.Unicode.GetString(byteArray); 

Или даже на:

 

byte[] byteArray = GetBytes();
var retval = Encoding.Default.GetString(byteArray); 

 

 

 


e0ne's comments

A Web Developer's Blog!