Архив за 06 августа 2012 - 5

Дайджест новостей JetBrains с 26 го июля по 5 августаПосле того как 26-го июля вышел долгожданный мажорный релиз ReSharper 7, произошел целый ряд событий, о которых мы не можем не упомянуть хотя бы в формате дайджеста.

Итак, перечислим важнейшие из них в обратном хронологическом порядке:

  • 3 августа мы узнали о том, что dotTrace Performance получил Jolt Productivity Award, которую называют Оскаром индустрии разработки ПО;
  • 2-го августа вышел RubyMine 4.5.1 Читать полностью »

Перевод статьи Джастина Этеридж (Justin Etheredge), в которой автор объясняет тонкую разницу между детерминированными и чистыми функциями.

Вчера я читал блог Мэтта Подвизоки (Matt Podwysocki) (этот блог, кстати, потрясающий, идите и подпишитесь), и у него есть пост «Recursing into Recursion – Memoization». Отличный пост, если вы хотите познакомиться с мемоизацией. У меня уже был пост об обобщенной функции мемоизации некоторое время назад, поэтому мы будем говорить не о мемоизации. То, что возбудило во мне интерес, было в конце статьи Мэтта:

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

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

Читать полностью »

Введение

Недавно решил открыть для себя магию, новых для меня, (Websockets.) Поскольку недавно открыл для себя чудеса python 2.7.7. решил взять его, как серверную сторону. Можно было использовать чужие библиотечки как ws4py или Twisted webscokets, но т.к. Я люблю писать сам, то возьмем просто socket.
Читать полностью »

После появления статей типа "Я не знаю ООП" — возникает желание внести ясность, «сорвать покровы» и «докопаться до истины».

Принципы объектно-ориентированности

Обычно выделяют (читай: на собеседовании требуют назвать) четыре «принципа объектно-ориентированного программирования»: абстракцию, инкапсуляцию, наследование и полиморфизм.

На мой взгляд (не говоря о том, что абстракция и полиморфизм могут быть запросто отнесены к подразделам наследования), принцип тут один, в общем, тот же самый, что при проектировании баз данных: представление всего в виде объекта — некоторой штуковины со свойствами. Набор обычно бывает фиксированным, и тогда говорят о классе объектов, а даже если понятия класса и нет, то наличие свойств с определёнными названиями подразумевается логикой программы, т.е. нечто типа класса в виде некоего минимального набора свойств всё равно присутствует. В общем, воззрения восходят к давнему С-шному/паскалевскому типу данных struct/record. Потом к этому добавили немного «функциональности» (в смысле функционального программирования): значением свойства может быть функция, причём такая, которая имеет доступ к самой структуре/записи, значением одного из свойств которой она является. Сей феномен, в лучших традициях немецкого латиноязычного нейминга (когда опция называется «вариантом», а степень числа — «потенцией»), назвали «методом». Желание повторно использовать код, в сочетании с представлением каждого предмета как некоего подобия паскалевской «записи», привело к появлению концепции «наследования».Читать полностью »

Thunderbolt: молниеносный интерфейс

Всем привет. Не так давно в компании Intel был разработан новый интерфейс на
базе стандартов DisplayPort и PCI-Express. Называется он Thunderbolt, и о нём многие
уже слышали. До этого лета данный разъем, и вся периферия оставались
уникальной “фишкой” устройств одного патентного тролля, хотя не все понимали, в
чем коренное отличие от имеющихся технологий, и обвиняли создателей во введении
очередной малосовместимой проприетарной фигни. Отныне это не так.Читать полностью »

1. Предисловие

Предприняв недавно очередную попытку немного освоить Linux (конкретней — Xubuntu 12.04), я заметил, что система меня вполне устраивает и желания плюнуть на затею и загрузить Windows не возникает. Легко нашлись аналоги привычных приложений, устройства заработали «из коробки».

Возникшие проблемы — не удалось настроить tv-тюнер и управление пультом от него через lirc работает совсем не так, как я привык в Windows. Первая проблема остаётся, вторую я решил небольшим скриптом на python'е.

Читать полностью »

Доброго всем времени суток!

Те, кому часто приходится поднимать сайты на Drupal, имеют в загашнике постоянный набор модулей и тем, которые так или иначе могут использоваться на понимаемом ресурсе.
При отсутствии данного набора приходится вспоминать и скачивать модули для воплощения на сайте того или иного функционала.
Поскольку актуальной на данный момент версией является седьмая, о ней и пойдёт речь.
Читать полностью »

Список функций для получения текста ошибок из их кодов (WinAPI)

Здраствуйте!

Представляю обзор функций для получения текста ошибок из их кодов, который представлен в программе Error Lookup.
Читать полностью »

Товарищи! Эта статья не для high-high-highload систем. Скорость работы представленных решений определённо меньше простейших проверок. На многотысячных или очень глубоких структурах применять предлагаемый подход крайне не рекомендуется. В этом топике побеждает быстрое кодирование, а не быстрый код.

Без длинных

Давайте без длинных вступлений, но всё же с предысторией. Однажды в рамках создания очередного очень важного компонента веб-сервиса нам понадобилось проверять уйму очень разных входных параметров (в данном случае, пришедших через $_REQUEST). Компонент был очень сложный, внутренняя и внешняя логика вызывала ежедневный баттхёрт между всеми участниками, а отдуваться приходилась немногим «избранным» программистам, которые писали, переписывали, выпиливали и запиливали заново. Когда на вход в систему с фронтенда падают десятки разных переменных, в том числе массивов, программисты при этом делают перекрёстные задачи (меняя логику) и мешают друг другу — код очень быстро разрастается, количество цепочек if-ов начинает занимать не одну страницу. Возвращаться к такому коду всё более и более чуждо ранимой душе. Тесты уже не очень помогают, т. к. каждое изменение логики приводит к изменению тех же тестов, в которых ещё надо вспомнить, понять и простить. Вот тогда и встал вопрос о создании удобного способа проверять весь входной поток каким-то приятным глазу способом, да чтоб всегда и везде получать фидбек про ошибки в однотипном виде. Акцент тут изначально стоял именно на удобстве для разработчиков, строго прошу в дальнейшем иметь.
Читать полностью »

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

image

А если конкретно, то вот что появилось в новой версии:
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js