Pull to refresh
82
0
Никита @greedykid

Rust-разработчик

Send message

Улучшаем админку

Reading time6 min
Views80K
Одно из слабых мест джанго-админки — главная страница. Идея авто-группировки моделей по приложениям и вывод столбиком в одну колонку работает только на начальных этапах, дальше это становится просто неудобно — куча лишней информации и довольно сложные пути для того, чтобы добавить полезную. Ну, например, чтобы названия приложений писались русскими буквами — полностью перекрывать шаблон.

И тут на помощь приходит django-admin-tools. С этим приложением минут за 20 можно получить «приборную панель» с произвольной группировкой приложений/моделей, вкладками, любым числом колонок, различными блоками, которые каждый пользователь сможет расставить, как ему удобнее, скрывать и сворачивать по желанию, закладками, настраиваемым меню и удобным способом добавления во все это хозяйство всего, чего только можно придумать.

Вот так, например, сейчас выглядит админка к сайту НадоВместе:

image
(это только часть, вот скриншот целиком)

Разберемся поподробнее.
Читать дальше →

«LibCanvas» — фреймворк для работы с Javascript Canvas, часть вторая

Reading time3 min
Views5.4K

Привет, Хабр! Я хочу рассказать тебе о новой библиотеке, которая помогает очень легко и изящно рисовать всякие штучки-дрючки на html5 canvas. Возможно, ты уже слышал о ней, но сейчас она пережила новое рождение. Что-ж, под катом я покажу тебе много интересненьких примеры, расскажу про нюансы работы и дам ссылку на грозу всех секретарш — почти работающий пасьянс «Косынка», созданную с помощью этой LibCanvas.

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

Делаем твёрдый переплёт для любимых книжек

Reading time6 min
Views551K
Небольшое вступление

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

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

Большое вступление

Некоторое время назад мне захотелось прочитать цикл Дугласа Адамса «Автостопом по галактике». Я попробовал почитать несколько переводов и не один меня не устроил. Поэтому было принято решение — читать на английском! Найти эти книги в оригинале в наших книжных магазинах довольно сложно. А если и есть, то только первая часть цикла. В электронном виде найти несколько проще. Но я предпочитаю читать с бумаги (читалку на E-ink куплю обязательно — очень нравятся), поэтому книги я распечатываю.

Первые две книги выглядели так:
image

Я их прочитал с огромным удовольствием, но выглядели они не очень хорошо. И я решил, что «Life, the Universe, and Everything» нужно делать книжкой.

Процесс с картинками и комментариями под катом. Осторожно, действительно много картинок.
Читать дальше →

Где наша бизнес-логика, сынок?

Reading time18 min
Views84K
Спасибо небу за то, что в субботу шел дождь, и я это прочитал (а вы скажите спасибо за то, что перевел). В воскресенье, однако, светило солнце и форматирование текста было отложено.

Отдельное спасибо автору, за разрешение отдельной публикации.

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

не поддайся темной стороне силы usernаme

Некоторые аспекты разработки платежных систем. Часть I. Трехзвенка без трехзвенки

Reading time2 min
Views3.7K

Мир тебе, %username%!


В этой серии постов я хочу рассказать о некоторых аспектах реализации платежной системы(а если повезет и двух), реально имевшей честь работать с середины 2000х в одном из городов нашей необъятной родины.
Что вообще такое ПС, и по каким принципам она должна работать? Я, как и заказчик, имел об этом представление лишь как пользователь WebMoney и платежных терминалов. Тем не менее, желание+деньги сделали своё дело и разработка началась.

Для начала, что вообще понималось под платежной системой и с чего началась разработка.
UPD:
Вторая часть!
Читать дальше →

Сглаживая кривую

Reading time5 min
Views1.6K
Практически для всех возможностей Django существуют способы модификации и расширения. Крайне редко может понадобиться переписывать существенную часть функционала Django только для того, чтобы изменить действие какого-то инструмента. Например, если вы хотите изменить внешний вид формы, вы можете отказаться от внешнего вида «по умолчанию» и создать собственное поле, или даже просто использовать собственный HTML. В обоих случаях вы выигрываете по спектру возможностей, сохраняя все остальные преимущества библиотеки форм.

Это расширение возможностей можно представить в виде кривой. На одном конце базовый вариант, который прост в написании, но ограничивает возможности контроля. На противоположном конце кривой будет специально созданный класс для форм со статическим у HTML-кодом, который обеспечивает больший уровень управления, но который и более сложен в создании. В примере с созданием форм эта кривая будет довольно гладкая, поскольку для всего спектра функций библиотеки форм существуют возможности постепенного замещения базовых опций на собственные пользовательские расширения.

До выхода в свет версии Django 1.2 для ORM такая кривая имела аналогичный вид, за одним исключением: существенный скачок в конце. Этот скачок появлялся в связи с тем, что при необходимости создания нестандартного SQL-запроса требовалось выйти за пределы ORM. Чтобы использовать определённый функционал ORM, пользователю пришлось бы создавать его заново самостоятельно, хоть это и не является само по себе катастрофой. В версии Django 1.2 добавлен метод Model.objects.raw (), который решает эту проблему и, таким образом, сглаживает эту кривую для ORM.

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

Fidonet. История одного пойнта (2010-й год)

Reading time4 min
Views9.6K
image

Предисловие


Данная статья не претендует на то, чтобы стать руководством к действию, а лишь рассказывает историю о том, как отдельно взятый интернетчик подключился к сети Фидонет в (страшно представить) 2010-м году.

Тем, кто уже потянулся мышкой к окошечку «Написать комментарий», дабы оставить для потомков что-то вроде: «Федо — R.I.P.», рекомендую сделать три глубоких вдоха-выдоха и дочитать этот текст до конца.

История моего интереса к сети Fidonet (можно смело пропустить)


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

Как не потерять почту когда умирают ДЦ или о надежности DNS

Reading time3 min
Views5.7K
Многие недавно пострадали от одновременного падения тысяч серверов сначала в пожаре на hosting.ua, а затем при отключении на McHost. Зацепило и меня. Денег на умерших сайтах я не зарабатывал, однако почта постоянно нужна для деловой переписки. Несмотря на то, что почта у меня перенесена на Google (или как вариант на Yandex), ни одно письмо не могло до меня дойти, т.к. вместе с серверами умерли и Name-сервера, и отправители просто не могли прочитать MX-запись для моего домена. Итого, 26 часов я просидел без почты объясняя всем людям, с которыми я работаю, что им нужно дублировать все письма на другой ящик — достаточно унизительно и не профессионально.

Как же заставить почту работать даже если все сервера хостера лежат?
Читать дальше →

«LibCanvas» — фреймворк для работы с Javascript Canvas

Reading time7 min
Views14K
Здравствуй, Хабр! Думаю, люди, которые следят за моим творчеством, заметили, что я очень увлекся рисованием на Canvas в JavaScript. Возможно это немного излишне, но ничего не могу с собой поделать, уж очень нравится эта технология. Так нравится, что я аж буду выступать на конференции с докладом о ней (Пономаренко Павел).

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

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

RE2 — новая библиотека регулярных выражений

Reading time1 min
Views5.9K
Вчера Google выпустил новую библиотеку регулярных выражений — RE2. Библиотека написана на C++.

Существует два подхода к реализации регулярных выражений: недетерминированные конечные автоматы (NFA) и детерминированные конечные автоматы (DFA). Первый механизм регулярных выражений используется, например, в Perl, Python, Ruby и .NET. К сожалению, в этом случае время работы программы может расти экспоненциально, а также может неограниченно расти использование стека. Такое поведение оказалось неприемлемым для таких проектов Google, как Code Search, Sawzall и Bigtable, поэтому программисты компании написали библиотеку на основе детерминированных конечных автоматов. RE2 гарантирует линейную скорость выполнения поиска и ограниченное использование стека. DFA также используется, например, в lex и egrep. В отличие от большинства подобных реализаций RE2 поддерживает почти все основные возможности PCRE.

Библиотека распространяется под BSD лицензией.

UPD: Убрал Tcl из примеров NFA, сейчас там используются DFA.

Удаленное обучение на основе Open Source — BigBlueButton

Reading time1 min
Views21K
Какое-то время работал с организацией системы обучения на основе ВКС Tandberg. Когда была поставлена задача организации удаленного обучения, Open Source решения были просты и унылы. Конторе пришлось изрядно потратится. Но Open Source не стоит на месте, все больше и больше компаний выходят на рынок с новыми идеями и большинство из них бесплатны для простого обывателя.


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

Ну да, сайты на C++

Reading time4 min
Views35K
Проскочила пара топиков про веб на C++ и уж много товарищей недопонимают смысл использования C++ в вебе. Поэтому расскажу как я в своем опыте использовал это. Я использовал, правда, Python, но только потому что библиотеки типа WebToolKit не было под рукой.

Если честно, я в C++ разбираюсь как хакер в женских помадах — как и многие, я большей частью использую PHP (и все больше Python, но его редко для веба — больше для OpenGL), но тем не менее это не мешает мне его(C++) использовать. Это к тому, что не пугайтесь сложности языка — там не все так плохо, как кажется.

Но, что важно: «Premature optimization is the root of all evil». И это важно. Писать какую-нибудь сложную систему сразу на C++ бессмысленно (я про сайты, конечно). Оптимизировать, как правило, нужно только 3% кода. Вот про эти 3 процента я и расскажу.

Был у меня сайт и на нем на всех страницах пользователи могли кое-чего кое-куда писать (долго объяснять) и в уголке шел «поток» в реальном времени (через AJAX update каждые 5 секунд) кто куда и чего написал. Делалось, как и положено на PHP/MySQL — таблица, в ней выбираем последние (условно говоря: WHERE id>MAX(id)-10 ORDER BY id DESC) записи. Периодически удаляем все, кроме последних десяти. Работало замечательно. Пока TechCrunch про сайт не написал. Сдох сервер из-за этой части.
Читать дальше →

Компьютерная фирма — о рекламе

Reading time13 min
Views1.6K
На Хабре уже не раз были статьи о рекламе, её правильности, неправильности, эффективности и убыточности. Имея в данном вопросе определённый опыт в малом бизнесе, решил оным и поделиться. Для кого эта тема является наболевшей – милости прошу под кат.

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

MongoDB — варим хороший кофе

Reading time4 min
Views18K
Введение

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

Сегодня мы поставим MongoDB, ниже рассмотрим свежеиспеченный ХабраЛоггер и пошпионим за главной страницей Хабра в реальном времени.
Читать дальше →

Боремся с утечками памяти (C++ CRT)

Reading time6 min
Views62K
Утечка памяти — довольно серьезная и опасная проблема. Быть может, пользователь и не заметит однократной утечки каких-нибудь 32Кб памяти (а ведь это целые 5% от 640Кб, которых «хватит всем»), но постоянно теряя сложные иерархические структуры или массивы размером больше INT_MAX (которые мы так любим создавать на 64-битной архитектуре) мы обречем его на страдания, а наш продукт на провал.

Не допускать ситуации вроде бы и не трудно — воспользуемся правилом «класть на место всё что взяли», но на практике это сильно осложняется человеческим фактором (банальная невнимательность), хитростью архитектуры и нелинейным порядком выполнения операторов, например, из-за применения исключений.

А можно было бы просто «отдаться» автоматическому сборщику мусора, ценой потери производительности (и это не обязательно Managed C++, для Native C++ / C есть библиотеки сборки мусора, вот, например).

Но мы поговорим о ситуации когда уже «всё плохо».
Читать дальше →

Работа с формами в Django

Level of difficultyMedium
Reading time4 min
Views39K
Формы являются одной из самых вкусных вещей в Django (после моделей, админки, url-маршрутизации и т.д.). Перед вами небольшое, но ёмкое руководство по их использованию, представляющее собой разбор 8 часто встречающихся ситуаций при программировании форм.
Читать дальше →

Виды тестирования и подходы к их применению

Reading time5 min
Views272K
Из институтского курса по технологиям программирования я вынес следующую классификацию видов тестирования (критерий — степень изолированности кода). Тестирование бывает:
  • Блочное (Unit testing) — тестирование одного модуля в изоляции.
  • Интеграционное (Integration Testing) — тестирование группы взаимодействующих модулей.
  • Системное (System Testing) — тестирование системы в целом.
Классификация хорошая и понятная. Однако на практике выясняется, что у каждого вида тестирования есть свои особенности. И если их не учитывать, тестирование станивится обременительным и им не занимаются в должной мере. Здесь я собрал подходы к реальному применению различных видов тестирования. А поскольку я пишу на .NET, ссылки будут на соответствующие библиотеки.
Подходы к тестированию

Где погрызть гранит науки

Reading time4 min
Views28K
image Здравствуй, хабрасообщество. Я знаю, ты любишь халяву. А еще ты любишь учиться. Ведь так? А что может быть лучше для хабравчанина бесплатного образования? Вот и решил собрать специально для тебя подборку из ссылок, где можно набраться уму-разуму в области IT.
Все нижеперечисленные ресурсы абсолютно и официально бесплатны и свободны, что не может не радовать.

UPD. Переранжировал сайты. В категорию «Компьютерные науки» попали те сайты, которые можно внести более, чем в одну из нижеперечисленных категорий. Ранжировка производилась по большинству содержимого, то есть в некоторых сайтах, отнесенных к определенной категории, могут попадаться статьи не относящиеся к определенной, но они будут составлять абсолютное меньшинство

Большое спасибо в помощи добавлении ресурсов vansickle, RedFox, kagen, theinterman, sM1Le.

Англоязычные ресурсы



Компьютерные науки



OpenCourseWare MIT




Одно из самых больших хранилищ учебных курсов. Здесь собраны практически все курсы, которые преподаются в Massachusets Institute of Technology, который по праву считается одним из лучших в мире. На сайте всего 1900 курсов, а тех, которые преподаются на факультете Electrical Engineering and Computer Science я насчитал более 200. Состав большинства курсов: краткие конспекты лекций, подробное описание курса, календарный план, задания на лабораторные работы, задания на курсовые проекты и экзамены, промежуточные модули. К некоторым курсам прилагаются и видеолекции.

смотреть другие сайты

Чему я научился в Майкрософт

Reading time9 min
Views6K
Проработав пять лет в различных командах в Майкрософт я вынес несколько вещей, о которых я даже не подозревал, когда оканчивал колледж. Основные ценности, чему я научился, вынесенные уроки, причина моего крика на друзей, как ни называй, они сослужили мне хорошую службу.

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

Information

Rating
Does not participate
Location
Scotland Central, Великобритания
Date of birth
Registered
Activity