среда, 29 июля 2009 г.

This widget's parent does not implement HasWidgets

Если в GWT виджет не содержит родителя (parent), мы можем спокойно добавлять его и использовать в панелях, других GWT-native виджетах и т.д. К примеру, вы создали Image:


Image img = new Image("some url");

а после добавили его в панель:


AbsolutePanel panel = new AbsolutePanel();
panel.add(img);

Этот код выполнится без проблем, т.к. img вообще не содержит родителя.

Но если у виджета будет родитель, отношения с ним несколько обостряются. Представим себе простой Composite виджет включающий в себя Image:

class MyComposite extends Composite {

public Image img = new Image();
public MyComposite() {
initWidget(img);
}
}

Теперь если мы добавим, скажем,в AbsolutePanel картинку из MyComposite, получим то самое сообщение: This widget's parent does not implement HasWidgets


среда, 22 июля 2009 г.

Eclipse workflow

При написании кода я практикую TDD, поэтому для меня очень важно запускать все unit тесты очень часто. Для того чтобы это делать в Eclipse мы можем создать Junit конфигурацию запуска, и запускать последнюю конфигурацию запуска через шорткаты (если честно, я только запуск юнит тестов в качестве конфигурации запуска и использую - остальное в build.xml). По умолчанию это Ctrl+F11.

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

Рецепт: Настройки-> Run/Debug -> Launching и в группе Launch Operation ставим Always launch the previously launched application.

В Intellij Idea есть замечательная убийственная штука как автодополнение выражения. Подход Eclipse немного отличается.

Рецепт: В настройках Java -> Typing -> Automatically insert at correct position. Ставим галочки для "}" и ";". Теперь в любом месте строки вставка этих символов приведет к их расположению в конце строки.


вторник, 16 июня 2009 г.

Firefox 3.5 в Ubuntu

Если вы еще не установили последнюю (бета) версию firefox, очень рекомендую вам это сделать. Скорость полета при серфинге будет вас ошеломлять. Большинство расширений которыми мне доводится использовать (Read Il Later, Xmarks, Greasemonkey) прекрасно работают в новой версии.

Рецепт для Ubuntu:

1. В источниках приложений добавляем: deb http://ppa.launchpad.net/fta/ppa/ubuntu jaunty main
2. В менеджере пакетов устанавливаем firefox-3.5
3. В меню -> Интернет -> выбираем браузер Shiretoko


воскресенье, 6 июля 2008 г.

VMware Server 2 rc

Что нового по сравнению со старой версией:

  • Поддержка VSS (Volume Shadow Copy) для Windows XP и Windows Server 2003 - позволяет создавать копии данных пользователям данных ОС
  • Virtual Machine Communication Interface - поддерживает связь между виртуальными машинами на одном и том же хосте
  • Средства для создания бэкапов (в т.ч. при включенной виртуалке)
  • Позволяет использовать устройства, не подключенные напрямую к хост-машине (через VMware Remote Console)
  • Консоль управления полностью Web-based

Новая бесплатная платформа виртуализации должна быть выпущена уже в этом сезоне. На данный момент доступен для скачивания release candidat.


пятница, 4 апреля 2008 г.

Русский перевод Magento

(Статья обновлена 4.04.2008)

Наверняка многие девелоперы, связанные с e-коммерцией, давно наблюдают за развитием проекта Magento. Magento - новый проект компании Varien, которая ставит свей целью захватить огромный кусок пирога e-commerce индустрии за счет своего Open Source детища.

Пока можно только предполагать, как будет происходить битва между Magento, Битриксом, Umi и остальными участниками российского рынка. Подогревая грядущие события, я решил выложить в свободный доступ полный перевод на русский язык всего пакета Magento (и административной части, и frontend-а). Качеству перевода я уделил достаточно своего времени, чтобы приблизить к отметке в 100%.

Замечу, что тех csv файлов для перевода, которые нам отдают при скачивании с официального сайта явно недостаточно. Хочу выразить благодарность PHP, MySQL и Google Translator-у за неоценимую поддержку, которая помогла мне практически полностью автоматизировать перевод Magento на человеческий русский язык.

Русская локализация Magento вер. 1.0: ru_RU.zip

(как только Varien решит все проблемы с загрузкой на сайте Magento, русский перевод будет доступен через панель пакетов локализации Magento)

Если вы смогли заметить ошибки, неточности перевода, непереведенные фразы, просьба - не спамьте в блоге, пишите на email. Учите, некоторые фразы не могут быть локализованы через csv файл (в данный момент), т.к. хранятся в базе данных и формируются при установке системы.


понедельник, 28 января 2008 г.

Создатель MySQL объявляет о релизе ногово движка Maria, который должен заменить InnoDB

Michael Widenius в своем блоге заявил об анонсе нового движка базы данных MySQL под названием Maria. Новый движок разрабатывается уже в течении двух лет и является закономерным ответом Oralcle'у на приобретение им движка InnoDB. Список основных возможностей Maria:

  • ACID (поддержка транзакций)
  • Commit / Rollback (откаты изменений)
  • Конкурентные запросы (Concurrent selects)
  • Блокирование строк (Row locking)
  • Поддержка групповых транзакций (Group commit)
Вспомним, что наиболее обширная поддержка транзакции началась с версии 4.1 на движке, ныне принадлежащему основному конкуренту - Oracle. Естественно, у разработчиков и администраторов могут появится вопросы о проблемах, связанных с переходом на Maria. И вот что пишем Monty:


Сейчас мы имеем Maria версии 1.0, без известных ошибок (что, естественно, не означает что движок лишен каких-либо ошибок, просто мы верим - то что есть уже достаточно надежно). Теперь нам нужна помощь разработчиков для того чтобы найти скрытые ошибки и довести Maria до максимально стабильного состояния.


Если вы захотите узнать больше о новом движке, обратите внимание на FAQ, которое должно ответить на все ваши вопросы о Maria.


четверг, 22 ноября 2007 г.

Связываем PHP и Java через AES шифрование

Задача: нужно зашифровать сообщение на PHP чтобы расшифровать его в Java.

Решение:
1. Использование mcrypt в PHP. Код для шифрования:


002 $cipher = "rijndael-128";
003 $mode = "cbc";
004 $plain_text = "Hello World";
005 $secret_key = "01234567890abcde";
006 $iv = "fedcba9876543210";
007
008 td = mcrypt_module_open($cipher, "", $mode, $iv);
009 mcrypt_generic_init($td, $secret_key, $iv);
010 $cyper_text = mcrypt_generic($td, $plain_text);
011 echo bin2hex($cyper_text);
012 mcrypt_generic_deinit($td);
013 mcrypt_module_close($td);

2. Вывод должен быть следующим:
"ac5c3404f57a5061f36a694eb5d56214"

3. Съедаем данные на выходе Java программой для того чтобы расшифровать


001 import javax.crypto.spec.IvParameterSpec;
002 import javax.crypto.Cipher;
003 import java.security.MessageDigest;
004 import java.security.NoSuchAlgorithmException;
005 import java.lang.Exception;
006 import javax.crypto.spec.SecretKeySpec;
007 import javax.crypto.SecretKey;
008 import java.io.IOException;
009
010 public class tester {
011 public static byte[] hexToBytes(String str) {
012 if (str==null) {
013 return null;
014 } else if (str.length() < 2) {
015 return null;
016 } else {
017 int len = str.length() / 2;
018 byte[] buffer = new byte[len];
019 for (int i=0; i020 buffer[i] = (byte) Integer.parseInt(str.substring(i*2,i*2+2),16);
021 }
022 return buffer;
023 }
024 }
025
026 public static void main(String [] args) throws Exception {
027 Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
028 SecretKeySpec keySpec = new SecretKeySpec("01234567890abcde".getBytes(), "AES");
029 IvParameterSpec ivSpec = new IvParameterSpec("fedcba9876543210".getBytes());
030 cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
031 byte[] outText = cipher.doFinal(hexToBytes("ac5c3404f57a5061f36a694eb5d56214"));
032 System.out.println(new String(outText).trim());
033 }
034 }

Оригинал: http://propaso.com/blog/?p=4


среда, 29 августа 2007 г.

Теперь LinuxFormat можно еще и скачать

Достаточно иметь счет в Webmoney или Яндекс-Деньги и вы - обладатель последнего номера LinuxFormat. Правда вы не получите DVD прилагаемый к журналу (да и получать удовольствие от держания журнала в руках тоже вряд ли сможете). Зато дешевле. И, главное, быстро!

К примеру, августовский номер...


четверг, 14 июня 2007 г.

MonoDevelop 0.14

Несмотря на обещания разработчиков "вот вот" выпустить стабильный релиз 1.0 Mono плавно увеличивает в миноре - с 0.13 до 0.14.

Кроме большого количества исправлений появились новые возможности:

  • Обновленный тулбокс и таблица свойств для дизайнера
  • Поддержка Subversion
  • Экспорт проекта (например в Visual Studio 2005)
  • Генератор пакетов (архив исходников, архив бинарников или tarball на automake)
  • Интеграция в среду (начальные скрипты, .desktop и установка в меню программ)
  • Незначительные зменения в редакторе, менеджере файлов, дизайнере
Ссылки по теме:

Release notes for MonoDevelop 0.14


четверг, 31 мая 2007 г.

C#: Выбор книги

Всегда приходится с чего-то начинать. Знакомиться ближе с C# я решил после прочтения нескольких статей в журнале Linux Format, тем более опыт написания приложений на прародителях (C/C++) у меня уже был.

Поиск книги, которая смогла бы мне помочь меня озадачил: мне не нужно разжевывать что такое переменные или объектная модель, я хорошо знаком с синтаксисом и практикой использования C++. Мне просто нужно понять какие особенности присущи C# и как я могу максимально эффективно их использовать!

Первая книга которая мне попала в руки - C# (самоучитель) Секунова Н. - оказалась достаточно сухой и неинтересной. Множество терминов и определений и минимум диалога с читателем. Книга написано грамотно, но читать ее до зевоты скучно. И назвал бы я ее скорее не самоучитель C# а справочник C#.

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

Вы не поверите - эта книга называется "Полный справочник по C#" Герберта Шилдта! Справочник для обучения? Именно этот справочник. Справочник, который интересно читать. Его легко читать. Автор не пытается оградить читателя от диалога. Это важно, если вы не хотите со сморщенным лбом вчитываться в каждую строчку, а хотите быстро и легко погрузиться в новую технологию. Книга вам не нужна, если вы не знаете основ программирования, но если вы знакомы с C / C++/ Java / PHP и т.п. и хотите быстро научиться C#, я буду рекомендовать вам именно эту книгу!