Обновить
1024K+

Программирование *

Искусство создания компьютерных программ

1 389,63
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

My escape(html)

Время на прочтение4 мин
Охват и читатели1.5K
Цель поста — покритикуйте.

Изучаю Django по-маленьку, посредством создания движка для блога. Появилась проблема вывода пользовательского контента, т.е. его экранирования. Написал свою функцию. Имея кое-какой опыт в создании контента для разных сайтов с разной идеологий экранирования пользовательских данных (скорее отрицательный, в основном сайты просят делать лишнюю работу), у меня выработалась философия.

Замечание. В моём блоге в базе всегда хранится никак не обработанный оригинал пользовательского ввода. Задача функции — сделать из этого ввода html, пригодный для отображения. В простейшем случае функция может вызываться во время отображении контента (в шаблоне или view). Для улучшения производительности можно завести отдельное поле в базе, которое будет результатом работы функции экранирования, и будет обновляться во время обновления контента.

Итак, философия функци:
Читать дальше →

Язык — отражение образа мыслей его автора

Время на прочтение2 мин
Охват и читатели1.7K
Цитата из книги «Learning Perl, 5th edition»:
In fact, a big part of learning Perl is actually learning how Larry thinks. Therefore, once you can think like Larry does, you know what Perl should do. But while you’re learning, you’ll probably need to look into the documentation.

Перевод:
Вообще-то, большая часть в изучении языка Perl — это изучение того как Ларри (автор языка) мыслит. Следовательно, как только вы сможете мыслить также, как это делает Ларри, вы будете знать, что должен делать Perl в каждом случае. Но пока вы учитесь, следует порой заглядывать в документацию.

Решил выписать краткие философские тезисы по языкам, которые использую в последнее время. Добавляйте информацию по своим любимым языкам в комментарии на английском языке, плз. Крайне желательно, чтобы это были цитаты авторов языка.

Perl


«There's more than one way to do it.»
«Simple things should be simple, and hard things should be possible»
«Perl is a mess and that's good because the problem space is also a mess.»
«We will encourage you to develop the three great virtues of a programmer: laziness, impatience, and hubris.»
«Perl is designed to let you program naturally. Whatever you think natural means.»
«Perl is unique, not just among scripting languages, but among computer languages in general. It's the only computer language consciously and explicitly designed to be postmodern. All other computer languages are still stuck in the modern era to some degree.»
Larry Wall

«Perl Makes You Happy!»
Tim Bunce

Python


Beautiful is better than ugly.
Explicit is better than implicit.
Читать дальше →

Язык Nemerle

Время на прочтение1 мин
Охват и читатели2.4K
Влад Чистяков, один из активных разработчиков языка Nemerle, начал цикл статей о нем. В отличии от существующих статей, которые ориентированы на опытных программистов, этот цикл подходит как для начинающих программистов, так и для опытных, но не знакомых с платформой .NET.

Введение от автора:

На данную работу меня вдохновила книга Кернигана и Ричи – «Язык С». Много лет назад я учился программировать по этой книге. Мне очень понравилась концепция изложения использованная в этой книге. В этой книге, вместо того чтобы взять одну тему и разобрать ее по косточкам, попутно заостряя внимание на мелких деталях, давался минимум, необходимый человеку, чтобы начать программировать на «C», а затем приоткрывался аспект за аспектом. Причем изложение давалось не на абстрактных примерах, которыми так увлекаются проповедники функционального программирования, а на примерах простых, но все же из этой жизни. Понимая, что прыгнуть выше Кернигана и Ричи очень тяжело, я решил не соревноваться с ними в креативности, а просто повторить их методологию, но с расчетом на Nemerle.

Язык Nemerle

Magento, подписка на новости во время чекаута

Время на прочтение6 мин
Охват и читатели1.9K
Оу, оказывается здесь даже есть целый один пост про разработку под Magento. Мне тоже есть что сказать. Интересно, будет ли это кому-нибудь интересно…

Итак, задача — добавить галочку «Получать новости» к одному из шагов чекаута (checkout — «проход через кассу»).


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

Processing 1.0 и почти закон всемирного тяготения

Время на прочтение5 мин
Охват и читатели2.8K
О Processing я слышал давно, но посмотреть что это из себя представляет никак не доходили руки. И вот у меня появилась идея сделать свой мирок с гравитацией и силами(есть точки и вокруг них летают частицы). В дальнейшем можно это как-то красиво обыграть и сделать крутой скринсейвер. Прототип решено было изготовить при помощи виновника торжества, а именно Processing 1.0.7.
Читать дальше →

Президент России подписал указ об утверждении Дня программиста

Время на прочтение1 мин
Охват и читатели847
Указ, который, который уже неоднократно упоминался на Хабре, вступает в силу.
Отныне 13 сентября официальный День программиста! (12 сентября — в високосные годы)
С наступающим профессиональным праздником, коллеги!!!
Читать дальше →

Лучшие «программистские» шутки о Чаке Норрисе

Время на прочтение2 мин
Охват и читатели4.9K
  • Все массивы Чак Норрис объявляет бесконечными, потому что Чак Норрис не знает границ
  • Чак Норрис пишет код который оптимизирует себя сам
  • Чак Норрис не может тестировать на равенство потому что он не имеет себе равных
  • Первая программа Чака Норриса была kill -9
  • MySpace на самом деле это не ваше пространство 'space', это пространство Чака (просто он дает вам пользоваться им)
  • Чак Норрис может написать функцию бесконечной рекурсии и получить ее результат
  • Чак Норрис может решить задачу Башен Ханоя за один ход
  • Чак Норрис прошел до конца World of Warcraft
  • «У меня это работает» всегда справедливо для Чака Норриса
  • Чак Норрис может удалить Корзину
  • Борода Чака Норриса может печатать 140 слов в минуту
  • Чак Норрис может тестировать все приложение всего одним ассертом (одной проверкой)
  • У клавиатуры Чака нет клавишы Ctrl потому что ничто его не может контролировать.

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

Семь кругов ада для новых элементов языка

Время на прочтение3 мин
Охват и читатели1.3K
image
Мой последний пост о новом элементе «dynamic» вызвал волну отзывов, которые не обычны для обсуждения новых элементов или особенностей языка. Многие были взволнованы и рады, но были и те, кто огорчился, что их язык «женится» с новым элементом.

У C# эта ситуация была для элемента var в прошлом и повторяется сейчас для dynamic. Не знаю, может, существуют семь кругов ада, когда их любимый язык программирования получает новые возможности. (Оговорка: Фактически, всю эту чепуху создаю я)
Читать дальше →

Краткая, неполная и вымышленная история языков программирования

Время на прочтение4 мин
Охват и читатели4.6K
1801 — Иосиф Мария Жаккард с помощью перфокарт вышивает «hello world» на ткани. Хабровчане тех времен недовольны отсутствием хвостовой рекурсии, многопоточности и заглавных букв.

1842 — Ада Лавлейс пишет первую программу. Её успехам препятствует маленькая проблемка — компьютера для исполнения этой программы ещё не изобрели. Через полтора века архитекторы корпоративных приложений переймут технику Ады по написанию неисполняемых программ и назовут этот метод UML.
Что случилось дальше?

C++ — как латынь

Время на прочтение1 мин
Охват и читатели1.5K
Для большинства программистов язык С++ — как латынь:
1. Очень многие современные языки от него произошли, но сейчас им мало кто пользуется.
2. Считается, что на латыни C++ можно написать что угодно. Это, наверное, так, но фразы получаются громоздкими.
3. Учеба в классическом университете подразумевает обязательное изучение C++. После учебы все равно мало кто его понимает.
4. Хорошо понимают в специальных учреждениях, где поддерживают старый софт. Читай «библиотека с манускриптами».
5. Библиотекари считают всех, кто не знает латыни, неучами.

Upd:
6. Латынь часто наделяют мистическими возможностями (см. Г. Поттер). C++ тоже.

Юмор, ага. :)

P.S. Я знаю знал, но теперь уже не люблю.

Upd2: Поместил в юмор. Ибо шутка же.

C# + WPF + сторонние сборки -> один .exe-шник

Время на прочтение3 мин
Охват и читатели26K
Бывает приходится разработать маленькое приложение на C# и WPF, однако в следствие использования сторонних сборок(например SharpZipLib, Unity) — получается так что на выходе у нас кроме нашего маленького .exe-шника получается ещё и куча .dll-ок, а нам нужно чтобы был именно один .exe-шник.
Читать дальше →

Изучи Postscript за пять минут

Время на прочтение1 мин
Охват и читатели5K
Разбирая запасы обнаружил старые, но до сих пор полезные тексты:

Ничего лишнего. Объяснений достаточно, чтобы создать свой первый PostScipt-документ, поиграться с ним и понять, что всё действительно работает. Тексты по ссылке — это смесь методички, учебного пособия и конспекта занятий.

Отвлечение от темы: какому языку программирования учить в школе? Паскалю, Сям, Лиспу? Практика показала, что хорошо подходит PostScript! Самое главное, что написав пару команд, учащийся сразу видит результат. И информатика превращается из зауми в интересное занятие. Опробовано моим другом на ПТУшниках, самых что ни на есть обычных гопниках, — ребята быстро въезжают в тему.

Производительность C++ vs. Java vs. PHP vs. Python. Тест «в лоб»

Время на прочтение5 мин
Охват и читатели138K
/update/ Статья обновлена по результатам обсуждения. Поправлен код Python (около 40% ускорения), написан код на Perl и Ruby (но меня терзают смутные сомнения, что с ruby я что-то сделал неправитьно), поправлен код на Java (на моей машине корректнее тестировать int, а не long. к тому же int в Java эквивалентен long в C++).

Вопрос производительности (скорости работы) различных языков часто всплывает в комментариях, на форумах, часто необоснованные :). Встречаются статьи, в которых авторы приводят примеры, где выигрывает реализация на том или ином языке.

После прочтения очередной статьи мне захотелось самому разобраться «здесь и сейчас». Сначала захотелось сравнить Java и C++ (не верил я, что в вычислительных тестах ява может догнать и обогнать cpp). 10 минут и простой код на C++ и яве готов: простой цикл и математические операции. После написания теста подумал и перевёл их на php и python. Позже добавился код на perl и ruby.

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

Ближайшие события

Официальный праздник День программиста

Время на прочтение1 мин
Охват и читатели871
Подпись этого приказа, я думаю это вопрос нескольких дней. Ура товарищи! Датой празднования выбран 256 день года 13 сентября (в високосный год 12 сентября). Еще раз ура )))

Почти бездаунтаймный переход между двумя разными вебсерверами

Время на прочтение1 мин
Охват и читатели570
Когда я совершал переходы между apache, lightttp и потом nginx, дошел до очень интересного "tips and tricks".
Умного тут ничего нет, но может кому-то поможет.
Читать дальше →

Удивительная страна Oz, или как принять данные при помощи send

Время на прочтение15 мин
Охват и читатели2.2K
Довольно давно, собирая информацию по средствам параллельного программирования, наткнулся я на элегантный (другими словами сложно описать ощущения) язык Oz http://www.mozart-oz.org. Язык тогда показался мне достойным того, чтобы представить его Habraсообществу. И вот, у меня появилось время и причины это сделать.

Oz — мультипарадигменный язык программирования. Набор базовых абстракций в языке необычный и позволяет, например, написать отправляющую информацию процедуру send так, что при её помощи можно будет так же и получать данные. И без всякого подвоха вроде:

send(socket; buffer; flag) = (if (flag == RECV) (recv(socket; buffer)) or (realsend(socket; buffer))).

Речь идёт именно о том, что отправка и получение данных осуществляются одной и той же последовательностью операций виртуальной машины Oz. Естественно, достигается это за счёт особых абстракций для работы с данными и с параллельными процессами. Описанию этих абстракций и посвящён этот текст, потому как на мой взгляд — они неплохо позволяют почувствовать особенности Oz. Конечно, Oz больше, чем изложенное ниже, но, как мне кажется, тайна хитрого send — материал подходящий для первого знакомства с этим языком и для получения от него удовольствия.

Итак...

Layers + Unity Container

Время на прочтение7 мин
Охват и читатели3.4K
Всем привет! Хочу привести пример layers-архитектуры и роль контейнера Unity в ней. А то народ про сам контейнер пишет, а как его c с пользой использовать толком написать не могут. Давайте я попробую.

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

Новая версия компилятора LDC

Время на прочтение1 мин
Охват и читатели1.3K
LDC — компилятор языка программирования D, использующий LLVM для генерации машинного кода. Судя по результатам тестов он совместим с DMD (стандартным компилятором D) и может стать его заменой в подавляющем большинстве случаев.
Читать дальше →

Графика средствами Python

Время на прочтение1 мин
Охват и читатели13K
В издательстве Apress вышла книга Beginning Python Visualization: Crafting Visual Transformation Scripts, посвящённая визуализации данных с помощью Python и смежных инструментов. Это уникальная в своём роде работа, потому что на Питоне такие вещи делают довольно редко. Автор книги говорит, что сам искал такое руководство для своей работы, но не нашёл, и ему пришлось разбираться самостоятельно.

В книге приводится несколько примеров, как можно визуализировать данные. Например, с помощью Python можно извлечь данные из GPS-ресивера через серийный порт и уже на компьютере обработать как душе угодно, в том числе создавать графики и диаграммы. Автор показывает всё это на примере конкретного GPS-приёмника и модуля PySerial.

Самое главное в книге — подробная демонстрация, как работать с известными для визуализации математических и научных данных MatPlotLib, NumPy и SciPy, а также с библиотекой PIL (Python Imaging Library) для простейшей обработки изображений.

Полистать книгу можно в магазине Amazon (по ссылке выше).