Показаны сообщения с ярлыком Программирование. Показать все сообщения
Показаны сообщения с ярлыком Программирование. Показать все сообщения
пятница, 18 мая 2018 г.
Stack wxHaskell Hello World!
Помучился тут с изучением wxHaskell и, чтобы не потерять пройденное, вывалил на github: https://github.com/ktak-007/stackWxHelloWorld
среда, 27 мая 2015 г.
Автозапуск Guard под Emacs
Настраивал тут Guard по статье на Хабре
Вспомнил, что когда-то настраивал нотификацию, в которой вроде бы ничего сложного нет (у Emacs она работает, кажется, из коробки).
Недостаток такой нотификации в том, что если появилась ошибка, в Emacs только перекрашивается mode-line в красный цвет (если всё Ок, то зелёный), а на ошибку надо смотреть в терминал, где запущен Guard. Да и предварительно необходимо его там ещё запустить.
А что если запускать guard прямо в Emacs при начале работы с проектом?
Для запуска Guard из Emacs нашёл готовую библиотеку ruby-guard. и положил её в ~/emacs/ruby-guard/
Обычно при начале работы с проектом я сначала открываю корневой каталог проекта в dired. Значит, цепляемся к Dired! Добавим это в ~/.emacs:
(add-hook 'dired-mode-hook ;; При открытии каталога в Dired
(lambda ()
;; Если найден Guardfile, запускаем Guard:
(if (file-exists-p (concat default-directory "Guardfile"))
(progn
(load-library "~/emacs/ruby-guard/ruby-guard.elc")
(ruby-guard)))
;; подкрашивать строку в dired:
(hl-line-mode)))
Теперь при открытии каталога, содержащего Guard-файл, у нас будет появляться окно с выполняющимся Guard и, как только у нас будут появляться ошибки проверки, мы сможем переходить на точку ошибки в файле, если добавим в ~/.emacs строку:
(add-hook 'shell-mode-hook 'compilation-shell-minor-mode)
Теперь, когда в guard-буффере появляется ошибка, мы можем перейти в нужный файл на строку с ошибкой просто кликом мышки на ошибке или клавишей Enter.
Вспомнил, что когда-то настраивал нотификацию, в которой вроде бы ничего сложного нет (у Emacs она работает, кажется, из коробки).
Недостаток такой нотификации в том, что если появилась ошибка, в Emacs только перекрашивается mode-line в красный цвет (если всё Ок, то зелёный), а на ошибку надо смотреть в терминал, где запущен Guard. Да и предварительно необходимо его там ещё запустить.
А что если запускать guard прямо в Emacs при начале работы с проектом?
Для запуска Guard из Emacs нашёл готовую библиотеку ruby-guard. и положил её в ~/emacs/ruby-guard/
Обычно при начале работы с проектом я сначала открываю корневой каталог проекта в dired. Значит, цепляемся к Dired! Добавим это в ~/.emacs:
(add-hook 'dired-mode-hook ;; При открытии каталога в Dired
(lambda ()
;; Если найден Guardfile, запускаем Guard:
(if (file-exists-p (concat default-directory "Guardfile"))
(progn
(load-library "~/emacs/ruby-guard/ruby-guard.elc")
(ruby-guard)))
;; подкрашивать строку в dired:
(hl-line-mode)))
Теперь при открытии каталога, содержащего Guard-файл, у нас будет появляться окно с выполняющимся Guard и, как только у нас будут появляться ошибки проверки, мы сможем переходить на точку ошибки в файле, если добавим в ~/.emacs строку:
(add-hook 'shell-mode-hook 'compilation-shell-minor-mode)
Теперь, когда в guard-буффере появляется ошибка, мы можем перейти в нужный файл на строку с ошибкой просто кликом мышки на ошибке или клавишей Enter.
четверг, 23 декабря 2010 г.
Подводные камни дробных чисел
В PHP такой код выдаёт странный, на первый взгляд, результат:
Т.е. в памяти была далеко не восьмёрка, а приведение типа просто отбрасывает дробную часть. Если округлить результат, то точность повысится:
$x = (0.1+0.7)*10;Казалось бы, должна быть всегда восьмёрка. Но этот код выдаст:
echo $x, "\n";
printf("%d\n", $x);
echo (int)$x, "\n";
printf("%0.10f\n", $x);
8Всё становится ясно, если в код добавить такую строку:
7
7
8.0000000000
printf("%0.20f\n", $x);Получим число 7.99999999999999911182
Т.е. в памяти была далеко не восьмёрка, а приведение типа просто отбрасывает дробную часть. Если округлить результат, то точность повысится:
$x = round((0.1+0.7)*10);Выдаст:
echo $x, "\n";
printf("%d\n", $x);
echo $x, "\n";
printf("%0.10f\n", $x);
printf("%0.20f\n", $x);
8Поэтому стоит избегать использовать числа с плавающей точкой там, где требуется целочисленный результат.
8
8
8.0000000000
8.00000000000000000000
четверг, 18 ноября 2010 г.
Язык Си для скриптов
Читая статью Загрузка Linux без ядра за 25 секунд решил проверить, заработает ли такой код на языке Си:
Далее делаем программу запускаемой (chmod +x test.c) и можно запускать командой ./test.c
Действительно, работает!
Смысл такого подхода: иногда не хватает либо доступных средств скриптового языка, либо производительности. Но держать компилируемую программу там, где по сути нужен скрипт, неудобно.
А здесь в одном флаконе и мощь языка Си, и скорость запуска, и скриптовый подход "подправил-запустил", и компиляция в машинный код.
Осталось только попытаться применить это на практике.
Далее делаем программу запускаемой (chmod +x test.c) и можно запускать командой ./test.c
Действительно, работает!
Смысл такого подхода: иногда не хватает либо доступных средств скриптового языка, либо производительности. Но держать компилируемую программу там, где по сути нужен скрипт, неудобно.
А здесь в одном флаконе и мощь языка Си, и скорость запуска, и скриптовый подход "подправил-запустил", и компиляция в машинный код.
Осталось только попытаться применить это на практике.
Подписаться на:
Сообщения (Atom)
