Автор: rikki

Про offset в методу get у ByteBuffer

Что делает off­set в методе get() у Byte­Buffer? Даже help не вновит ясности. Вроде как смещение — но при попытке сместить и прочитать начинают сыпаться ошибки переполнения буфера. Справка написана не особо понятно, но, к счастью, есть исходник реализации. И, заглянув в него, мы узнаём, что это.… индекс, с которого надо начинать запись в массив!!…

Прочитать статью целиком

Получаем параметры GET из url

Оказывается, все параметры, передаваемые в URL get-запросом. лежат в свойстве location.search. Как-то так: “?foo=boo”. $.extend({ getUrl­Str : func­tion() { //used for unit test return location.search.substr(1); }, getUrl­Vars : func­tion(){ var vars = {}, hash­es = this.getUrlStr(); if(!hashes) return {}; hash­es = hashes.split(‘&’); for(var i = 0, len = hashes.length; i < len; i++) { var…

Прочитать статью целиком

Д. Босуэлл, Т. Фаучер — Читаемый код, или программирование как искусство

Небольшая книжка, в которой много полезных мелочей. Например, более точные варианты названий для типичных функций: send — deliv­er; dis­patch; announce; dis­trib­ute; route find — search; extract; locate;recover start — launch; cre­ate; begin; open make — cre­ate; set­up; build; gen­er­ate; com­pose; new Именованные интераторы для циклов (ui лучше, чем просто i). Дополнительные постфиксы — size_mb, html_utf…

Прочитать статью целиком

java: javacTask: source release 8 requires target release 1.8 в IntelliJ IDEA

Эта ошибка появляется внезапно и сразу же доводит до бешенства. Запускаешь компиляцию. а Idea в ответ: java: javac­Task: source release 8 requires tar­get release 1.8 в Intel­liJ IDEA Чтобы поправить, отправляемся в .idea/compiler.xml, и выставляем в разделе byte­code­Tar­getLev­el для этого модуля target=1.8

Параметры по умолчанию в JavaScript

Загружаем необязательные опции функции из указанных в default_options. Для методов вида doSomething(main_data, options), где options не обязательны. var JsOp­tion­sHelper = (func­tion(){ func­tion doLoadOptions(default_options, options){ var result_options = {}; if(!options) { for(var opt_key in default_options) result_options[opt_key] = default_options[opt_key]; } else { for(var opt_key in default_options) result_options[opt_key] = (options[opt_key] !== unde­fined) ? options[opt_key] : default_options[opt_key]; } return result_options;…

Прочитать статью целиком

JavaScript charset в браузере

Согласно стандарту HTML5, стандартная кодировка страницы — UTF-8. А вот с JavaScript всё сложнее. Пусть у нас есть какой-то JSON. Напишем функцию, которая его возвращает: func­tion getOut­line­J­son() { return { “title” : “Элемент1” }; } Сохраняем в отдельный файл, привязываем через <script>. Пытаемся вывести в консоль: document.addEventListener(‘DOMContentLoaded’, func­tion() { console.log(getOutlineJson()); }); В консоли будет JSON

Прочитать статью целиком

case folding collision between” в Mercurial под Windows

У Mer­cu­r­ial под Win­dows есть неприятная особенность — если переименовать файл проекта, изменив в нём только регистр одного из символов, то рухнет всё. Mer­cu­r­ial, как дитя Unix-а, считает, что разные регистры — это разные файлы, а вот для Win­dows это параллельно. В результате — ошибка “case fold­ing col­li­sion between” и полный обвал репозитория: даже если удалить…

Прочитать статью целиком

eval в JavaScript

eval в JavaScript с отложенным выполнением: var JsE­val­u­a­tor = (func­tion(){ var errors = { WRONG_SYNTAX : “Синтаксическая ошибка в выражении “%SOURCE%””, NON_SYNTAX : “Ошибка %ERROR_TITLE% при разборе выражения “%SOURCE%”” }; func­tion null_func() { return null; } return { checkedE­val : function(str_to_eval){ if(!str_to_eval) return null_func; var trimmed_str = str_to_eval.trim(); if(!trimmed_str) return null_func; try { var result…

Прочитать статью целиком

Разница между isInstance() и instanceof в Java

В чём разница между instance­of из class.isInstance(item) в Java? На самом деле разницы почти нет, просто instance­of требует, чтобы класс, с которым сравнивают, был известен ещё на этапе компиляции. А вот isIn­stance можно смело вызывать и от экземпляра: item1.getClass().isInstance(item2)