====== Programming ====== * [[http://sideeffect.kr/popularconvention|Popular Coding Convention on Github]] * [[habrahabr>266969|Что такое красивый код, и как его писать?]] * [[habrahabr>207390|Почему [не]нужно комментировать код]] * [[habrahabr>268063|Как писать код, который никто не сможет сопровождать]] * [[habrahabr>252101|Документируем код эффективно при помощи Doxygen]] * [[habrahabr>276695|Как оформлять коммиты, чтобы потом не было больно]] * [[habrahabr>272469|Инструкция по проведению code review]] * [[habrahabr>270881|Этика Code Review]] * [[habrahabr>260241|Семь смертных грехов разработки ПО]] -- анти-паттерны, неотслеживаемые изменения, сложные релизы, добровольный статический анализ, неизвестное покрытие тестами, бесконечная разработка, недокументированные интерфейсы * [[habrahabr>252493|Как внедрить статический анализ в проект, в котором более 10 мегабайт исходного кода?]] * [[habrahabr>271585|Нам нужны не столь мощные языки программирования]] * [[habrahabr>267559|Как работают над Chromium]] * [[lifehackeru>2015/08/05/deadline|Почему мы срываем дедлайны и как это остановить]] * [[habrahabr>278179|Почему технический долг — это хорошо]] * [[habrahabr>305280|9 ¾ действительно полезных советов по работе с большими проектами]] ===== Languages ===== {{ http://habr.habrastorage.org/post_images/58e/f3a/536/58ef3a536e9c97f42b5723356d0134c4.png?600|Популярность языков программирования}} [[habrahabr>307012|{{ https://hsto.org/getpro/habr/post_images/ead/7ec/6b5/ead7ec6b5e70800d56a6b040864f4982.png|Рейтинг RedMonk}}]] [[http://apptractor.ru/info/analytics/linkedin-samyiy-vostrebovannyiy-navyik-na-ryinke-statisticheskiy-analiz-data-mining.html|{{ http://apptractor.ru/wp-content/uploads/2014/12/The-25-Hottest-Skills-of-2014-on-LinkedIn.png?400|Самый востребованный навык на рынке — статистический анализ и Data Mining}}]] * [[habrahabr>201548|Опросы про языки программирования (популярность)]] * [[https://stackoverflow.com/insights/survey/2017/|StackOverflow Developer Survey Results 2017]] * [[youtube>v=LR8fQiskYII&list=PLF4wvr0GvlAGt91fny1CSBLklXEVsiUg5|Larry Wall: 5 Programming Languages Everyone Should Know]] * [[habrahabr>307012|Рейтинг языков программирования в 2016 году]] * [[habrahabr>265271|Какие технологии чаще всего используются на хакатонах]] * [[habrahabr>254121|Большое обзорное тестирование языков программирования]] на нескольких сомнительных бенчмарках * [[habrahabr>275547|Несколько интересностей и полезностей для всех]] * [[http://www.nestor.minsk.by/sr/2003/07/30710.html|Lisp: побеждая посредственность]] ==== C++ ==== * [[habrahabr>275685|Советы о том, как писать на С в 2016 году]] * [[habrahabr>277261|Как непродуманные предупреждения компиляторов помогают портить совершенно правильный код]] * [[habrahabr>304176|Анализ потокобезопасности в С++]] ==== Scala ==== * [[habrahabr>228247|Scala is a complex language!]] * [[habrahabr>269695|Из Java в Scala: 7 причин для изучения нового языка]] * [[habrahabr>302828|Курс молодого бойца для Spark/Scala]] -- курсы по Hadoop, Spark, Scala * [[habrahabr>273535|Как мы перешли со Scala на Go]] * [[youtube>TS1lpKBMkgg|Scala 2013 We're Doing It All Wrong]] by Paul Phillips ===== Algorithms ===== * [[http://courses.csail.mit.edu/6.851/spring12/lectures/|Advanced Data Structures]] lectures at MIT. * [[habrahabr>182776|Алгоритмы и структуры данных JDK]] * [[habrahabr>222427|Перевод учебника Дасгупты, Пападимитриу, Вазирани «Алгоритмы»]] * [[http://www.stolyarov.info/books|Андрей Викторович Столяров: Опубликованные книги]] * [[habrahabr>346362|Советуют разработчики: подборка популярных книг о программировании, языках, алгоритмах]] * [[habrahabr>202820|Cache-Conscious Binary Search]] * [[http://neerc.ifmo.ru/wiki/index.php?title=%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0,_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%B8_%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85|Дискретная математика, алгоритмы и структуры данных — Викиконспекты]] * [[habrahabr>246105|Структуры данных: 2-3 куча]] * [[habrahabr>303374|2-3-дерево. Наивная реализация]] * [[habrahabr>150732|АВЛ-деревья]] * [[habrahabr>145388|Рандомизированные деревья поиска]] * [[habrahabr>246951|Играем с генетическими алгоритмами]] * [[habrahabr>267037|Простой алгоритм определения пересечения двух отрезков]] -- читать [[wpru>Алгоритмы:_построение_и_анализ|Алгоритмы: построение и анализ]] * [[habrahabr>268513|Муравьиная оптимизация и сетевые алгоритмы]] * [[habrahabr>270289/#comment_8645065|Метод Гаусса на Java]] * [[habrahabr>275813|Рекурсия. Тренировочные задачи]] * [[habrahabr>305912|Доказываем корректность поиска диаметра дерева]] * [[habrahabr>305868|Синтезатор речи «для роботов» с нуля]] * [[stackoverflow>3492302|Given sequence of numbers 1..100, find the missing number(s)]] ==== Сложность алгоритмов ==== * [[habrahabr>195482|Введение в анализ сложности алгоритмов]] * [[http://bigocheatsheet.com/|Know the complexities]] * [[habrahabr>188010|Знай сложности алгоритмов]] * [[ixbt>64:3154#8|Определение NP, NP-полных (NP-complete), NP-трудных (NP-hard) задач]] ==== Сортировка ==== * [[habrahabr>251751|Доказательство некорректности алгоритма сортировки Android, Java и Python]] * [[habrahabr>247053|Сортировка на односвязном списке за O(nlogn) времени в худшем случае с O(1) дополнительной памяти]] * [[habrahabr>268535|Внешняя сортировка с O(1) дополнительной памяти]] ==== Строки ==== * [[habrahabr>144736|Ropes — быстрые строки]] * [[habrahabr>303830|Как я ускорял strstr]] * [[https://habrahabr.ru/users/ntz/topics/|Статьи ntz по нечёткому поиску]] * [[habrahabr>114947|Фонетические алгоритмы]] * [[habrahabr>114997|Нечёткий поиск в тексте и словаре]] ===== Android ===== * [[https://www.udacity.com/course/ud853|Developing Android Apps - Android Fundamentals]] * [[habrahabr>211921|Переадресуем уведомления о входящих звонках и SMS с Android телефона на Linux]] * [[https://cordova.apache.org/|Cordova]] -- develop mobile apps with HTML, CSS & JS ===== [[wp>Unicode Transformation Format|UTF]] ===== * [[livejournal>wizzard0/238106|турецкая İ с точкой]] * [[livejournal>lionet/104884|Кто считает, что UCS-4 решает все проблемы с многобайтовыми кодировками?]] * [[https://bugzilla.mozilla.org/show_bug.cgi?id=202251|bug#202251 – Find/FindAsYouType will not find text if entered with diacritics]] ===== API ===== === [[http://chaos.troll.no/~shausman/api-design/api-design.pdf|The Little Manual of API Design]] === Characteristics of good API: * Easy to learn and memorize * Leads to readable code * Hard to misuse * Easy to extend * Complete The design process * Know the requirements. Define the API before you implement it. * Write use cases before you write any other code. Write several examples against the API. * Prepare for extensions. * Have your peers review your public API. Don't publish internal APIs without review. * When in doubt, leave it out. === [[habrahabr>237459|Как правильно разрабатывать API с поддержкой обратной совместимости. Семинар в Яндексе]] === * Правило №1: больше интерфейсов. В пределе в вашей публичной документации не должно быть ни одной сигнатуры, принимающей конкретные типы, а не интерфейсы. * Правило №2: иерархия. Ваши объекты должны быть выстроены в иерархию: кто с кем взаимодействует. * Правило №3: контексты. Рассматривайте любую промежуточную ступень иерархии как информационный контекст для нижележащей ступени. * Правило №4: consistency. Любой объект должен предоставлять полное описание своего состояния в любой момент и полный набор событий, позволяющий отслеживать все изменения своего состояния. * Правило №5: события. Организуйте взаимодействие между объектами с помощью событий, причём в обе стороны. * Правило №6: делегирование. Поскольку чаще всего изменяется реализация и функциональность именно нижнего уровня абстракции (верстка, протоколы взаимодействия, etc), интерфейс к нижнему уровню абстракции должен быть максимально общим. * Правило №7: тесты. Пишите тесты на интерфейс и запускайте их поверх предыдущей версии API. * Правило №8: внешние источники. Если вы не контролируете внешний источник данных – заведите к нему версионируемую обёртку на своей стороне. ===== [[wp>Software design pattern|Design patterns]] ===== * [[habrahabr>259885|Интерфейс на веревочке]] * [[habrahabr>259167|Шаблоны проектирования XSD]] * [[habrahabr>263033|Забудьте о DAO, используйте Repository]] -- идея использовать аналог ''[[http://grepcode.com/file/repo1.maven.org/maven2/org.hibernate/hibernate-core/4.3.10.Final/org/hibernate/criterion/Criterion.java#Criterion|org.hibernate.criterion.Criterion]]'' в DAO * [[dropbox>1vmn9o907o6o2dd/head_first_design_patterns_poster.pdf|Head First Design Patterns poster]] * [[dropbox>jk7sgvyhi6328gg/design_patterns_uml.pdf|Design Patterns UML poster]] (taken from [[http://blog.miloot.com/blog/2013/12/10/design-pattern-cheat-sheet/|Design Pattern Cheat Sheet]]) * [[stackoverflowa>2707195/267197|GoF patterns in JDK]] ([[dropbox>qleb8mnsa01jxqd/design_patterns_in_java.pdf|local copy]]) * [[http://www.mehdi-khalili.com/orm-anti-patterns-series/|ORM anti-patterns]] ==== Design Pattern Encapsulation Hierarchy* ==== {{http://i.stack.imgur.com/wTO3S.jpg?400|Design pattern encapsulation hierarchy}}
Solution Language Interpreter
Public Interface Adapter Bridge Façade Interface Mediator
Behavior Class Decorator State
Algorithm Strategy
Algorithm Elements Template
Executable Sequences Method
Receiver Selector Arguments Invocation
  • Collection
  • Composite
  • Chain of Responsibility
  • Iterator
  • Proxy
  • Object
  • Flyweight
Visitor  
  • Command
  • Observer
Closure
* //Static//, //Named Variable// & //Computed// can also be applied at any level. † [[wp>Design Patterns|GoF]] designated //Proxy// to this pattern where access to the target object or its behavior is limited and //Decorator// where it's augmented. ===== Development methodologies ===== ==== XP principles((From "Extreme Programming Applied: Playing To Win" by Ken Auer and Roy Miller. Other books can be found [[http://kibi.ru/xp/xp|here]].)) ==== - Planning Game - Small Interactions - System Metaphor - Simple Design - Unit Testing - Refactoring - Pair Programming - Collective Code Ownership - Continuous Integration - 40-hour Week - On-site Customer - Coding Standard ===== Web ===== ==== WebServices ==== * [[habrahabr>274675|Что такое RESTful на самом деле]] * [[habrahabr>265845|RESTful API — большая ложь]] * [[http://samolisov.blogspot.com/2013/12/soap-vs-restful.html|SOAP vs RESTful]] * [[habrahabr>252237|3 лучших инструмента для описания RESTful API]] * [[http://vbond.kiev.ua/ru/post/Pochemu_ne_stoit_ispolzovat_Swagger_kak_servis_dlja_dokumentirovanija_RESTful_API/|Почему не стоит использовать Swagger как сервис для документирования RESTful API]] * [[habrahabr>276731|Полноценный REST API для перфекционистов за 5 минут]] * [[livejournal>ru_java/1019047|Самый лучший простой надёжный элегантный REST framework]] * [[.:java:web_service|Creating a SOAP Web Service using Java 6]] === [[http://cxf.apache.org/|CXF]] === * [[http://www.slideshare.net/trenaman/oop2008-restful-services-with-gwt-and-apache-cxf|RESTful services with GWT and Apache CXF]] ==== MVC frameworks ==== * [[livejournal>tonsky/216018|Критерии выбора веб-фреймворка]] * [[livejournal>ru_java/958646|Выбор Java web framework 2010]] * [[livejournal>ru_java/972026|Ext GWT vs GWT]] * [[http://www.allpdf.info/2011/01/ext-gwt-2-0-beginner%E2%80%99s-guide.html|Ext GWT 2.0: Beginner's Guide]] (ISBN-10: 1849511845, ISBN-13: 978-1849511841) * http://playframework.org ([[habrahabr>106744|статья]]) * [[livejournal>tonsky/219212|Choosing the HTML templating engine]] * [[http://liftweb.net/|Lift]] -- Web Framework for Scala * [[livejournal>ru_java/1023955|JavaServer Faces (JSF) 2]] * [[http://click.apache.org/|Apache web application framework]] * [[http://www.vaadin.com/|Vaadin]] * [[http://demo.vaadin.com/sampler|Vaadin Sampler]] * [[http://vaadin.com/book/|Book of Vaadin]] * [[http://demo.vaadin.com/book-examples/book/|Book Examples]] * [[livejournal>ru_java/967069|Vaadin + Spring Security]] * [[stackoverflow>8872398|What Web Framework to use to implement the diff-like UI?]] * [[http://www.inductionframework.org/|Induction Java Web Application Framework]] * [[http://www.stripesframework.org/|Stripes]] -- a presentation framework for building web applications. Similar to Tapestry, Spring-MVC and Struts. * [[http://www.playframework.org/|Play framework]] focuses on developer productivity and targets RESTful architectures * [[livejournal>ru_java/1018430|Play framework]] ==== CSS ==== * [[habrahabr>204238|Отключать эффекты :hover при скроле позволяет здорово сохранить отзывчивость сайта]] * [[habrahabr>243821|Математика разметки с помощью CSS: разбираемся с calc()]] * [[habrahabr>158917|CSS анимации transition и transform: трудности, которые могут ждать вас на пути]] * [[habrahabr>229359|О размере экрана, пикселя и элемента]] -- формула для расчёта размера элемента в зависимости от расстояния до экрана * [[habrahabr>255919|Стилизация поля ввода для загрузки файлов на чистом CSS]] * [[habrahabr>267677|10 частых ошибок начинающих веб-разработчиков]] * [[habrahabr>273403|Несколько дельных советов по CSS]] * [[habrahabr>277399|Мои правила хорошего интерфейса]] * [[googleplus>109778339382896924585/posts/iBDVB4StrB1|Названия цветов и оттенков]] * [[lifehackeru>2013/11/24/tiff-naglyadnoe-sravnenie-raznyx-shriftov/|Tiff — наглядное сравнение разных шрифтов]] === Flexbox === * [[http://caniuse.com/#feat=flexbox|Can I use Flexible Box Layout Module?]] * [[http://css-tricks.com/snippets/css/a-guide-to-flexbox/|A Complete Guide to Flexbox]] * [[http://www.w3.org/TR/css3-flexbox/|CSS Flexible Box Layout Module Working Draft]] * [[stackoverflowa>21515042|Scrolling a flexbox with overflowing content]] * [[http://msdn.microsoft.com/en-us/library/ie/hh673531%28v=vs.85%29.aspx|Flexbox layout in Internet Explorer 10]] ===== Math ===== * [[lifehackeru>2014/12/09/matematicheskie-tryuki/|10 трюков, упрощающих математические операции]] === Ряды === * [[wpru>Гармонический ряд]] * [[http://mathprofi.ru/kak_naiti_summu_ryada.html|Как найти сумму ряда?]] * [[http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_%D1%81_%D1%87%D0%B8%D1%81%D0%BB%D0%BE%D0%B2%D1%8B%D0%BC%D0%B8_%D1%80%D1%8F%D0%B4%D0%B0%D0%BC%D0%B8|Арифметические действия с числовыми рядами]] * [[http://storage.mstuca.ru/bitstream/123456789/4301/4/%D0%A0%D1%8F%D0%B4%D1%8B.doc|Ряды (пособие по изучению дисциплины)]] ===== DNS ===== * [[https://www.host-tracker.com/]] -- checks site availability / domain expiration * [[lifehacker>5683682/five-best-domain-name-registrars|Five Best Domain Name Registrars]] * [[https://www.gandi.net/|gandi]] -- most verbose search for domain availability * [[:software:security#ssl_certificate_authorities|Get SSL Certificate]] ==== Trademark / registered name search ==== * [[http://belgospatent.org.by/database/index.php?pref=tz&lng=ru&page=1|Поиск товарных знаков в РБ]] * [[https://www.znakoved.ru/poisk_tovarnyh_znakov/|Поиск товарных знаков РФ, Европа]] * [[http://oami.europa.eu/eSearch/#basic|Trademark search for Europe]] ==== Port forwarding and DynDNS ==== If you which to benefit from [[wp>DynDNS]], you have to register. ==== Alternative dynamic DNS providers ==== Collection of dynamic DNS providers: * [[http://dnslookup.me/dynamic-dns/|DDNS – Free Dynamic DNS Providers]] * [[lifehacker>the-best-free-alternatives-to-dyndns-1561556205|The Best Free Alternatives to DynDNS]] Support MX records: * [[http://freedns.afraid.org/|FreeDNS]] * Interesting subdomains: [[http://freedns.afraid.org/subdomain/edit.php?edit_domain_id=29|mooo.com]], [[http://freedns.afraid.org/subdomain/edit.php?edit_domain_id=45088|etherbyte.com]], [[http://freedns.afraid.org/subdomain/edit.php?edit_domain_id=71015|shadir.com]], [[http://freedns.afraid.org/subdomain/edit.php?edit_domain_id=90982|icfar.com]], [[http://freedns.afraid.org/subdomain/edit.php?edit_domain_id=106091|patf.com]], [[http://freedns.afraid.org/subdomain/edit.php?edit_domain_id=110961|robinhud.com]], [[http://freedns.afraid.org/subdomain/edit.php?edit_domain_id=122536|feared.eu]], [[http://freedns.afraid.org/subdomain/edit.php?edit_domain_id=179636|dynamai.com]], [[http://freedns.afraid.org/subdomain/edit.php?edit_domain_id=209455|silksky.com]], [[http://freedns.afraid.org/subdomain/edit.php?edit_domain_id=212676|nfors.com]], [[http://freedns.afraid.org/subdomain/edit.php?edit_domain_id=225070|pegle.com]], [[http://freedns.afraid.org/subdomain/edit.php?edit_domain_id=242733|diipl.com]], gurdit.com, ndcg.com, higgr.com, mocis.com, patov.com, tintira.com, alexfb.com, lolk.org, mtn.cc, jake.eu * [[https://entrydns.net/|EntryDNS]] * [[http://duckdns.org/|DuckDNS]] Support MX records for paid accounts: * [[https://www.dtdns.com/|DtDNS]] Does not seem to support MX records: * [[https://ydns.eu/|yDNS]] -- currently only A and AAAA records are supported * [[https://www.dnsdynamic.org/|DNSdynamic]] * [[habrahabr>253851|Еще один вариант динамического DNS на своей площадке]] -- работает только в пределах локальной сети (использует ''[[http://linux.die.net/man/8/nsupdate|nsupdate]]'' из пакета ''[[https://packages.debian.org/jessie/dnsutils|dnsutils]]'') {{tag>UTF image DNS REST 7-zip}}