Добро пожаловать!

Я Дож, программирование — моё хобби. По мере того, как я осваиваю что-то новое, стараюсь об этом написать пост.
На текущий момент в блоге затронуты следующие темы: vim, free pascal, lisp, forth, m4
Занимаюсь разработкой своего языка под названием DEmbro, подбробней: wiki и svn
Для постов, не связанных с программированием, у меня есть отдельное жж.

сентября 01, 2014

Free Pascal: Трюки с объектами

Введение

Данный пост я решил написать после дискуссии на форуме freepascal.ru, из которой я для себя узнал много всего полезного. За ценные знания большое спасибо Vapaamies, runewalsh и Сергею Горелкину, также вклад в дискуссию внесли zub и stanilar.

В посте будет рассказано о читах разной степени приемлимости, но даже если у вас нет необходимости в их применении, пост поможет глубже понять устройство объектов в паскале. Под объектами здесь и далее подразумеваются типы, объявленные как object, а не class. С class'ом многие рассматриваемые тут задачи решаются легко, т.к. язык поддерживает и указатели на конструкторы, и виртуальные конструкторы, и классовые типы (т.е. class of ...).

Тем не менее, в последнее время я возвращаюсь к истокам и всё чаще использую именно object, т.к. в отличии от class, он (1) может быть создан на стеке или внутри какой-то внешней структуры, не затрачивая времени на аллокацию, что полезно для мелких и короткоживущих объектов, и (2) гораздо легковеснее, не несёт с собой в программу RTTI, что может быть полезно при приступах оптимизаторской паранойи.


Читать дальше......

Пост ненависти к GoogleCL

Недавно захотел опробовать отправку поста в линуксе при помощи GoogleCL. Из консоли, то есть, — потому что посты я набираю исключительно в Vim'е, да ещё и с собственной преобразовалкой Markup'а, и вместо копирования текста в браузер мне проще из консоли отправить пост.

Установил, набрал пример из документации:

google blogger post --tags "GoogleCL, awesome" "Here's a really short post. The next posts will be much longer\!"

Запросили логин и название блога — ввёл. А дальше… впервые в своей жизни увидел w3m — консольный браузер! У меня же нет графической оболочки. Оказывается, чтобы залогиниться в консольной программе, требуется браузер, да не просто браузер, а с поддержкой JavaScript! Т.к. w3m не поддерживает JavaScript, из коробки по крайней мере, я поставил lynx, попытался залогиниться через него, — а в нём не работает нажатие на кнопку «Разрешить» (пишет «ОТКЛЮЧЕННАЯ кнопка посылки формы»).

Ёлки-палки, о чём думали в гугле, когда делали это!? Получается, консольная программа не такая уж и консольная. Как с этим быть, кто знает?


Читать дальше......

Постоянные читатели

Обо мне

Моя фотография
Мой e-mail: vitek_03(at)mail(dot)ru