• Немного карри

    Использовать карринг в Scala одно удовольствие. Само определение каррирования(или карринга, названо в честь Хаскелла Карри): Для функции h типа h : (A × B) → C оператор каррирования Λ выполняет преобразование Λ(h) : A → (B → C) Отметим, что Λ — это оператор, то есть «функция над функциями». Например берем функцию foo(x,y), каррируем и получаем moo(x)(y) — функцию от x которая возвращает функцию от y.

    Читать далее…

  • Java + Excel файлы (Apache POI)

    С периодичностью раз в два-три года сталкиваюсь с проектами, в которых опять нужно работать с Excel файлами. Наверно это у меня что-то кармическое… Сейчас, в очередной раз приходиться реализовать полуавтоматический разбор сотен excel-файлов с прайсами. В прошлых своих проектах использовал JExcelApi. Ничего плохого про эту библиотеку сказать не могу, но хочется какого-то разнообразия в жизни поэтому в этот раз с товарищем решили попробовать Apache POI. Apache POI поддерживает как формат для обычных *.xls файлов (HSSF) так и *.xlsx файлы (XSSF). Кстати, формат для *.xls файлы в Apache POI они обзывают «HSSF — Horrible SpreadSheet Format», то есть «Вселяющий ужас формат…

    Читать далее…

  • Календари и даты

    Постоянно наталкиваюсь на людей, которые утверждают, что «Date — deprecated, нужно использовать Calendar». Это не верно! Вариаций на тему «почему это не верно» где-только уже не написано, но все-равно появляются люди которые мне доказывают, что правильней использовать Calendar (аргументеруя именно «устареванием» Date). На самом деле в классе Date просто много deprecated методов. Но если почитать внимательно документацию, то видно, что устарел не сам класс, а просто часть функций этого класса еще во времена выхода Java 1.1 была вынесена в другой класс. Вот и всё! Целевое назначение объектов класса Date сохранилось. Это простой и легкий класс для обозначения времени (например 2010-01-01T12:00:00).…

    Читать далее…