» Решение одной задачи

10 Февраль 2012 – 4:21

Расскажу о некотором моем решении, которое я применил для одной задачи. Решалась она при помощи C# (.NET 4.0). Хотелось сделать не просто «чтобы работало», а как-то в стиле C# что ли. Адекватного решения сходу на просторах сети найти не смог, пришлось самому мозговать. Итак, суть задачи:
Есть некий класс, у которого одно из полей — коллекция строк. Пусть это будет класс Person, а имя поля — NickNames. Далее имеется коллекция, объекты которой — Person. Назовем ее «persons». Требуется найти все элементы в этой коллекции, у которых в поле NickNames присутствуют 1 или более значений. Чтобы все стало понятнее, давайте рассмотрим пример и листинги кода.
Читать полностью »

» Наконец-то поставил Delphi XE

7 Июль 2011 – 4:07

Таки я наконец поставил себе сие чудо, вышедшее уже довольно давно. Цель была, собственно, лишь ознакомится. И это первое знакомство уже омрачилось по некоторым причинам:

1) С какого-то перепугу при редактировании в Object Inspector любого property у компонентов текст не выделяется при нажатии на Ctrl + A. Пока не разобрался с чем это связано, но данная вещь для меня важна.
2) В любом Label, добавленном на форму, я могу вводить лишь 2-а символа :O. При чем если загрузить данные из файла — будет любое кол-во текста. Опять же причин этой тупизны пока не нашел.
3) Рефакторинг как был говном так и остался. Я бы вообще не называл его этим словом. Полный игноринг директив вроде {IFDEF} и прочие нюансы. При переименовании компонента на форме в коде меняются лишь названия методов, связанных с ним. В той же няшной MS VS производится автоматический поиск по коду тех мест, где используется данный компонент — и его имя автоматом заменяется на новое, что крайне удобно и не заставляет делать кучу лишних движений.
4) Функция «Format Source» иногда работает хуже клавиши BackSpace — последняя стирает хотя бы один символ, а первая работает как хочет: иногда нормально, иногда половину моего кода уберет неизвестно куда :( .

Это лишь то, что я успел заметить при работе с IDE за два дня. Есть пару няшных вещей, но во всех тонкостях я еще не успел покопаться. Особенно интересует насколько стабильно работают приложения, скомпилированные под Mac OS и Linux в Delphi Prism. Ну что же, проверим все это чуть позже, а заодно, возможно, разрешим вышеперечисленные проблемы.

P.S. Стоит Win7, Delphi XE 15.0.3953.35171, Update 1, Help Update 2, hot fixes.

» Два способа разработки под Android на Delphi

11 Февраль 2011 – 18:43

Delphi DroidДовольно давно нашел занятную статейку, где расказывалось о возможности написания Delphi кода и компиляции его под Android платформу. Да-да, именно под Android =) К сожалению линка под рукой нету, добавлю его позже, если раскопаю. Помню, что разработку вели в Delphi Prism с использованием MonoDroid (кстати и под iPhone тоже компилить можно, будет юзаться MonoTouch). В той же статье была простейший пример с кнопочкой и выводом чего бы Вы думали? Да, именно «Hello World» :) Кстати, стоит упомянуть, что это не совсем уже Delphi (я говорю о Delphi Prism). Были добавлены такие вещи как «method», операторы «+=, «-=» и прочие вещи, хотя общие концепции и принципы все же сохранились и адаптация происходит быстро Но не нравится мне идея работы с MonoDroid, потому я решил поискать какое-нибудь иное решение. И кое-что нашел, может и не самое лучшее, но стоящее рассмотрения :) .

Читать полностью »

» Скины для приложений в Lazarus под Linux: кодинг для извращенцев

4 Декабрь 2010 – 17:35

     Тема скинов под Lazarus крайне волнующая, так как роскошных пакетов, подобно AlphaControls под Delphi, для Лазаря не написано. То есть создать видео- или аудио-плеер с подборкой «шкурок» разработчику не удастся, ели только он не намерен писать собственный движок. И это было бы нормально в том случае, если разрабатывать под Windows. Там хорошо документированный WinAPI для работы с контролами и GDI. Однако передо мной встала задача оформить внешний вид приложения при разработке под Linux — конкретнее пока что под Ubuntu. Под катом можно прочитать о том, как я пытался ее решить и какие обломы словил.
Читать полностью »

» Lazarus под Linux: опыт разработки

25 Ноябрь 2010 – 22:22

Не так давно я начал разработку одного приложения под Linux. Решил попробовать на собственной шкуре Lazarus IDE + FPC. Писать на всяких C++ или C# под Mono я не захотел, да и давно уже хотел попробовать именно разработку на Delphi под Linux.
Что ж, хочется сразу заметить, что ощущения не из приятных. После установки IDE и ее запуска увидел унылый много-оконный интерфейс, за который я так ненавижу GIMP. Абсолютно неудобно таскать эти окошечки и обращаться к некоторым элементам (форма, инспектор объектов и прочее). Молчу уже про 5 «элементов» в панели задач — особо доставляет, если нужна открытая папка с проектом, ресурсами или иными вещами. Фиг найдешь то, что требуется в кратчайшие сроки. Брррр….
Собственно создав новый проект порадовало визуальное проектирование — довольно высокий уровень реализации, хотя до Borland Delphi еще пилить и пилить. Очень бесит, когда при двойном щелчке по событию компонента в Инспекторе Объектов автоматическое добавление кода не вставляется в редактор кода сразу. Надо еще раз кликнуть по полю и только тогда это произойдет. Раздражает!
Совместимость кода с Delphi проектами на высоком уровне, однако есть некоторые моменты, вроде присваивания процедур. Если в Delphi можно было делать OnChange := SomeChange, то в Lazarus надо писать так: OnChange := @SomeChange. Но это решается путем добавления директивы {$mode Delphi}.
И таких моментов хватает.
Но больше всего не дает покоя отсутствие WinAPI. Я имею ввиду кучу полезных и готовых функций, которые достаточно было взять из windows.pas. Теперь OffsetRect хрен сможем использовать под Linux, ведь такого рая там нету. Или удобного ReleaseCapture и Perform(WM_SSYCOMMAND, $F012, 0) — придется высчитывать положение формы в обработчиках событий OnMouseMove/Down/Up. Это особо доставляет.. Но ничего не поделаешь, приходится привыкать и писать кучу быдло-кода…
Так же надоели баги с пакетами. Создал новый Package, добавил в него рабочий порт JVCL Slider (кстати его пришлось портировать самому, ибо таких хороших сборок, как RX, JVCL и прочих под Linux нет, а если и есть — то они содержат не более 40% от Borland версии). Сохранил пакет, настроил пути, добавил зависимости, перекомпилировал все как надо. Перезагрузил IDE. Во вкладочке компонентов нашел установленный компонент. Поставил на форму. Все ок. Попытался собрать проект — говорит мол нету такого модуля. Специально добавил его в Пути Проекта. Не проканало. Копировал модуль в папку с проектом — не прокатило. В общем что только не пробовал — так и не помогло. Зато в ином проекте все заработало. Магия, хуле.
В общем такие вот дела. Итого в Lazarus IDE мне понравилось только возможность компиляции под Linux, не более. Чисто ИМХО, возможно кому-то он и нравится — я спорить не буду. Думаю будущее у Lazarus есть, только надо его постоянно допиливать. И будет гуд

» Извлечение и добавление контактов из GMail на Ruby (Rails)

20 Октябрь 2010 – 18:38

Недавно потребовалось решить на Ruby одну задачку: синхронизировать контакты из GMail аккаунта со своим приложением. Под синхронизацией подразумевалось получение и добавление контактов. Вкурив доки от Гугла я не сразу нашел нужный мне протокол, который помог бы мне в реализации поставленной задачи. Это связанно с их крайне похожими именами и запутывании в том, какие данные к какому протоколу относятся. Хорошенько покопавшись в литературе, я понял, что для реализации решения моей задачи надо курить Google Data Protocol. Если кому надо, то почитать документацию по оному можно в Developer’s Guide Overview . После непродолжительного поиска были найдены и примеры работы с данным протоколом из под Рубина, даже в связке с Рельсами, за что корпорации добра отдельное спасибо. Во втором случае, как оказалось, все просто — достаточно поставить gem «gdata» и будет мне счастье. Ставим его как и все гемы: sudo gem install gdata. Работать с ним очень удобно, так как многие вещи реализованы за вас. Пример моего рабочего кода с использованием данной либы можно найти на Pastebin (GData).

Но все бы хорошо, если бы одним из условий моей задачи не было юзание старой версии Рельс (или вовсе отказ от них). А gdata требует Rails версией => 2.2.2. :( «Плохо» — подумал я и продолжил вкуривание доков. Под пресс изучения попала первая статья, описанная выше, где приведен пример работы с spreadsheets с использованием стандартной Ruby либы «NET». В ней рассмотрен процесс авторизации и получения нужных данных. То что надо. Код хорошо расписан, однако попробовав переделать его для работы с контактами из GMail акка я словил «Invalid token» при запросе к ленте контактов. Хм.. Перелопатив кучу статей и заставив пыхтеть гугл, я все же пришел к решению, причем очевидному и, почему-то, пропущенному мною. Данный токен в примере от Гугла получен для сервиса «wise» (это видно при инициализации переменной data, где в качестве параметра «service» задается соответствующее значение). Wise — это имя для Spreadsheets Data API. Для того, чтобы получить контактные данные, мне требуется иное имя сервиса — «cp» (Contacts Data API). Просмотреть все имена сервисов для Гугла можно по этой ссылочке, которая меня и навела на верное решение проблемы. Поменяв всего лишь пару символов в коде я получил заветный результат, обработанный впоследствии гемом REXML в удобоваримый формат. Либо я такой олень и не сразу понял, что именно надо менять, чтобы получить доступ к ленте контактов, либо попросту это никому ранее не нужно было, так как в Инете я ничего полезного не насерфил.
Рабочий код импорта контактных данных из GMail аккаунта не используя сторонних гемов можно посмотреть так же на Pastebin (NET Ruby). Рассматривать добавление нового контакта я не стал, так как это можно найти в приведенных выше статьях. Достаточно понять, что мы создаем переменную, которая будет хранить данные о контакте в нужном формате, а затем отправляем ее серверу посредством POST запроса.

В результате мы имеем два возможных варианта работы с контактами GMail аккаунта в зависимости от требований к разработке.

» Я и блог вновь заработали

13 Октябрь 2010 – 17:00

Наконец-то мне удалось оплатить хостинг после 15-дневного простоя. Да и сам вылечился. Изначально предполагал, что приболел ангиной. Но как позже выяснилось — это был то ли стоматит, то ли еще че-то умное — я не запомнил. Болезнь протекала тяжело — ничего не ел, температура 39-40, сильная слабость. Но закончилось все благополучно, на данный момент жив-здоров и вполне способен работать.

Зато за это время много чего произошло. Например красноглазики могут радоваться выходу новой версии Ubuntu с каким-то туповатым названием «Свободомыслящий сурикат» 0_о, хотя предыдущие имена так же несли глубокий адски-сакральный смысл. Я может чего-то не понимаю, но это явно перебор.
Google ответил на иск Oracle, и на данный момент я поддержу «корпорацию добра». А не охуел ли Oracle? Дать бы под жопу за какие-то непонятные действия. Думаю суд будет на стороне гугла, но деньги решат время покажет.
Какие-то крайне умные дядьки обсуждали формат PDF и круто и громко заявили, что его надо выбросить на свалку из-за возрастающего кол-ва багов в нем. Ну да, конечно, вопрос затрат на новый формат и сопровождающее ПО явно не трогал души этих аналитиков. Да и куча других моментов, лень обсуждать это.
Красноглазики, кстати, проводят перепись самих себя. Опять пытаются доказать кому-то, что их более 1%. Молодцы! Вы опупенно круты! Это они так свое ЧСВ повышают или как?
В общем ничего такого сверх нереального не произошло -.- Или я что-то пропустил?

» Черт, я заболел

24 Сентябрь 2010 – 12:52

Вот, блин, невезение! Вчера на работе сидел, уже было хреново, чувствовал жар и раскалывалась голова. Пришел домой, померял температуру — 37.8. Fuck! Ненавижу болеть! До того момента, как я лег спать, состояние не улучшилось. Горячий чай с лимоном, затем молоко с медом — короче стандартный бабушкин набор — результата не видно. Всю ночь не мог уснуть, то знобило, то в жар бросало. Под конец, к часам 6-7 вроде уснул.. Проснулся — хреново. Слабость, голова болит, горло болит, короче все недуги свалились на меня. Надеюсь до понедельника все же пройдет.
Добрый совет: не пейте ледяную водку с морозилки :)

» Компактная и удобная IDE для ассемблера TASM

22 Сентябрь 2010 – 22:59

Данный компилятор ассемблерного кода уже давно морально устарел и использовать его крайне не рекомендуется. Но остались еще олдфаги и ВУЗы, которые сидят на нем. Вот и мне из-за универа пришлось кодить на TASM, однако писать код в блокнотике, а затем пихать его в командной строке компилятору и линковщику — удел извращенцев. Поэтому я решил сделать небольшую, удобную IDE с подсветкой синтаксиса, «словарем» опкодов, регистров и прочей лабуды, логом компилятора и автодополнением кода. Всякое убожество вроде RadASM ставить не желаю — ибо нагружу комп лишним говном и не получу переносимости на флэшке. Поэтому за пару дней быренько набыдлокодил TASM Small IDE.

Что она умеет? Читать полностью »

» Новая версия WordPress для блога

8 Сентябрь 2010 – 23:44

Может и поздновато, но я все же обновил бложек до версии 3.0.1. Хорошо разработчики быстро выпустили русскую локализацию, хотя мне и английская идет нормально. Но все же приятней работать в родном окружении :) . Читать о нововведениях было впадлу — просто обновил.
Сперва думал сделать это автоматически, но словил подводных камней — пришлось качать с официального сайта и ставить все ручками. Кстати прошло все гуд, вроде никакие данные не исчезли. Зато приятно порадовала админка — она стала как-то легче грузиться. Или мне так кажется? Цвета так же подобрали хорошо. Сразу заодно и обновил кучу плагинов до последних версий. Как обычно кэш-плагин для WordPress начал жалобно скулить и я снес его нах — лень разбираться, что ему там не нравиться. Потом может как-нить поставлю, если будет необходимость.
В целом доволен. Надеюсь новая версия двигла меня не подведет. Кстати mywordpress.ru что-то опаздывает. У них еще только 2.9 версия, когда на официальном уже 3.0.1, да еще и на русском. Стыдно :)


Страница 1 из 1012345...Последняя »