-
Scala и пустота
В Scala есть несколько разных сущностей для обозначения несуществующих, пустых или неопределенных объектов. Начнем с самого привычного для Java-программистов случая. Null Null – это trait. Объект null (с маленькой буквы) — это как раз и есть объект типа Null. Он находится внизу иерархии типов в Scala, в противовес AnyRef. Благодаря этому вы всегда можете как-бы…
-
EncryptableProperties и защита от дурака
Все знают, что не следует хранить в конфигурационных файлах (например properties) критически важную информацию в открытом виде. Например логины и пароли от базы данных, почты и т.д. Не стоит этого делать, т.к. “случайный” сисадмин или пользователь сможет открыть этот ваш файлик и увидеть пароль. С учетом того, что довольно часто пароли придумывают люди, то запомнить…
-
Main args, netbeans
Пара простых вещей (про аргументы командной строки + Java/Scala и чуть-чуть про NetBeans) Самый популярный и набивший оскомину пример HelloWorld встречается, наверное, уже во всех учебниках по программированию: // Пример из туториала: http://download.oracle.com/javase/tutorial/getStarted/application/index.html class HelloWorldApp { public static void main(String[] args) { System.out.println(“Hello World!”); // Display the string. } } Здесь String[] args — аргументы…
-
Немного карри
Использовать карринг в Scala одно удовольствие. Само определение каррирования(или карринга, названо в честь Хаскелла Карри): Для функции h типа h : (A × B) → C оператор каррирования Λ выполняет преобразование Λ(h) : A → (B → C) Отметим, что Λ – это оператор, то есть “функция над функциями”. Например берем функцию foo(x,y), каррируем и…
-
Java + Excel файлы (Apache POI)
С периодичностью раз в два-три года сталкиваюсь с проектами, в которых опять нужно работать с Excel файлами. Наверно это у меня что-то кармическое… Сейчас, в очередной раз приходиться реализовать полуавтоматический разбор сотен excel-файлов с прайсами. В прошлых своих проектах использовал JExcelApi. Ничего плохого про эту библиотеку сказать не могу, но хочется какого-то разнообразия в жизни…
-
Календари и даты
Постоянно наталкиваюсь на людей, которые утверждают, что “Date – deprecated, нужно использовать Calendar”. Это не верно! Вариаций на тему “почему это не верно” где-только уже не написано, но все-равно появляются люди которые мне доказывают, что правильней использовать Calendar (аргументеруя именно “устареванием” Date). На самом деле в классе Date просто много deprecated методов. Но если почитать…
-
Apache HTTPD, mod_jk, Apache Tomcat, Linux
1. Начало. Если Вы ставите Tomcat как-то так: (от рута) aptitude install tomcat6 tomcat6-admin tomcat6-examples, то прежде чем двигаться дальше, вам возможно стоит обратить внимание на настройки URIEncoding в server.xml. Здесь и далее: Томкат => Apache Tomcat, Апач => Apache HTTPD. 2. Вяжем. Классическая схема работы Томката (Apache Tomcat) в продакшене, это связка его с…
-
Java one, Day #2
Java One, День Второй. Москва. По просьбе друзей выкладываю фотографии с конференции Java One. Фотки не мои, так что вопросы где взять исходные фотографии не ко мне. Как я туда попал. Вначале идти не очень хотелось – дел по работе выше крыши. Но поскольку Java One мероприятия последнее время проводились в Питере, то я их…
-
Уменьшение изображения на Java
Довольно рутинная операция. Есть несколько способов. Возьмём исходное изображение: 1. Самый простой. Первый на stackoverflow. Суть метода очень проста – создаем BufferedImage меньшего размера, затем прорисовываем в него исходное изображение. Далее сохраняем обычным ImageIO.write() BufferedImage scaled = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g = scaled.createGraphics(); g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null); g.dispose(); ImageIO.write(scaled, “JPEG”, new…
-
Простые хаки и Greasemonkey
Недавно обратил внимание на то, что шрифты на сайте java.net какие-то неприятные – мутные и плохо читаются. Может они всегда были такими, а я стал чуть-более придирчивым, а может быть стали такими после мега_перезагрузки_сайта. На самом деле не столь важно почему, важно понять как подправить… Могу предложить два способа из разряда “быстрых хаков”. Способ 1.…