Category: it

Category was added automatically. Read all entries about "it".

лямбда

Про потоки (не мыслей)

Из дискуссии с sassa_nf.

В java локальные переменные метода не собираются сборщиком мусора, пока мы не выйдем из метода (наверх, разумеется, а не глубже). Это важно, потому что Scala'вские Stream из-за этого часто становятся бесполезны.

Вот имеем мы некий Stream, который любят сравнивать с Haskell'евским списком. И начинаем его обрабатывать. А обработка через некоторое время завешается с OutOfMemoryError:
val messages = Stream continually nextMessage
for (message <- messages) doSomething(message)

А теперь перепишем это так:
for (message <- Stream continually nextMessage) doSomething(message)

и обработка у нас будет вестись вечно.

А всё потому, что первый способ генерит astore, который создаёт локальную переменную. А второй — нет.

UPD: sassa_nf всё же заставил java работать правильно. За что ему отдельное спасибо!
лямбда

Рекурсия

Я это как-то писал, но напишу ещё раз, бо тема поднялась.

Недостатки явной рекурсии по сравнению с комбинаторами (ага, zip3):

  • Рекурсия непонятна (согласен, это субъективное).
  • Обычно используется с декомпозицией, нарушая инкапусляцию.
  • Всегда используется для работы с элементами, вместо работы с коллекцией (wholemeal programming).
  • Цепочка вызовов проще для оптимизации.
  • Сложнее нежно мною любимый equational reasoning.

Юный хаскеллист, избегай явной рекурсии!

Ну и ссылочка, куда без неё!
лямбда

BigDecimal in Haskell

Скажите, пожалуйста, кто что использует для arbitrary precision computations в Haskell? Интересует аналог BigDecimal в java - при делении задаём режим округления, можно использовать для денег. Ну и важно иметь человеческий Read/Show.

Кроме библиотеки Jeremy Shaw есть что-нибудь стоящее? Мне не нравится, что она не на hackage и у неё есть (небольшие) проблемы с делением.
шапка джейн

Переводы. Опрос.

_darkus_ перевёл "Розеттский камень". Я переводы практически не читаю, и до сих пор очень сильно сомневался в их необходимости. Но вот этот текст прочитал на русском (правда, изредка заглядывая в оригинал), что сэкономило моё время.

Тем не менее интересно было бы узнать, насколько важны переводы для IT-шников. Ответьте, пожалуйста, у кого есть сложившееся мнение по этому поводу - стоит ли вообще оно того, чтобы переводить? Возможно, есть какие-то граничные случаи и общего ответа нет - тогда расскройте, если можно.

Спасибо!
гомер

MaxOS X vs XMonad. Fight!

Ответ на комментарий от thesz http://gaperton.livejournal.com/47460.html?thread=886116#t886116

Краткое введение. Я считаю, что мне xmonad дают значительно больше, чем может предложить макось. Под макосью и xmonad здесь подразумевается также набор программ, соответственно для мака и линукса. thesz предлагает мне сначала ознакомиться с интерфейсом макоси.

Ответ.

Как мне ознакомиться с интерфейсом макоси и сделать это правильно?

Из описанных преимуществ макоси (мы же говорим об интерфейсе?), которые я встречал, дополни плз:

Меню наверху

Обычно (сильно бОльшую часть времени) я вообще не пользуюсь меню. Шоткаты делаю мою работу быстрее.

Меню пользуюсь в незнакомых программах, что случается крайне редко (за последние полгода могу вспомнить только одну новую), или в программах, в которых с шоткатами хреново (в этом случае стараюсь перейти на "правильные" программы).

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

Кнопка zoom

У меня xmonad! нет кнопок, нет необходимости менять размер окна так, как это принято в обычных wm. Задача, которую решает кнопка zoom, у меня решается автоматически, либо шоткатами по смене layout-а.

Тут я не знаю, может быть действительно подгонка размера окна - это удобнее, чем лейауты.

Dock

Я пользовался AWN и не понял конкретно в чём польза.

Запускать приложения и открывать их окна одним способом? Приложения, для которых это нужно, делают это сами (пример - firefox). Если нет - всегда можно написать скрипт, но у меня таких проблем не возникало, поэтому такого скрипта нет. Запуск приложений вообще очень редкая задача, гораздо важнее задача работы с ними.

Между окнами же я переключаюсь так, как это принято в xmonad шоткатами - смена воркспейса, если окно не в текущем, смена окна, если окно неактивно.

Искренне не понимаю, зачем нужна эта штука.

Finder + Spotlight / Quicksilver

Работал с beagle + deskbar-applet, с gnome do. Bash + мои скрипты делают то, что мне нужно лучше, специальные программы делают конкретный поиск ещё лучше.

Например, bash ведёт себя как кусок IDE, когда находит нужные мне java-файлы по camel-case маске, mutt + mairix ищет в моих письмах, а в документах можно поискать даже простым fgrep. Для запуска всех подряд программ dmenu + dmenu_path, для запуска конкретных - шоткаты в xbindkeys.

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

Но тут я вижу место для повышения удобства. Правда, пока руки не доходят сделать.

Safari

Я использую firefox + vimperator и uzbl. И действительно не понимаю, как заточенная под меня вещь может быть для меня хуже, чем написанная для всех?

Здесь, правда, ещё можно поговорить о скорости, говорят, сафари быстрый, не знаю. Но я пока говорю об интерфейсе.

Безумная красота

На макось приятно смотреть. Возможно, у меня шрифты похуже. Что из этой красоты действительно было бы полезно для моей работы?

...

Вообще получается, что удобство макоси очень зависит от наличия мыши, верно? Я использую мышь 99% для веб-серфинга :)

P.S. Я работал на макбуке, но очень немного и совсем не по моему основному профилю, так что рассматривать это как хоть какое-то ознакомление не могу, но названия некоторых программ знаю, и даже их запускал! :)
лямбда

Сериализация взаимно-рекурсивных данных

На RSDN Tonal- задаёт вопрос о сериализации взаимно-рекурсивных данных.

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

Поэтому в голову приходит замечательный пакет data-reify от Andy Gill. О его применении можно прочитать в статье Type-Safe Observable Sharing in Haskell.

Смысл в том, что мы можем разложить рекурсивные данные на нерекурсивные данные со ссылками - то, что нам и нужно.
Collapse )
Покритикуйте.
лямбда

Partial signatures

nealar сейчас в haskell@c.j.r показал на partial signatures от Олега.

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

Второй случай рулит.
лямбда

Proxy pattern in Javascript

А нет в javascript чего то вроде питоновского __getattr__ или смолтолкового doesNotUnderstand? Нужно, например, прокси соорудить, а механизма получения методов проксируемой сущности нет. Так что их руками передавать?

UPD: оборачиваемый объект удалённый. То, что у него есть какой-то метод становится известно только в момент вызова.