25 января 2012. Феерические глупостиСегодня, мой друг и коллега Cavin прислал мне ссылку на статью с хабра — «Браузеры запутались в блочной модели для таблиц». Я считаю, что эта статья в полной степени показывает мои мысли о том, что в россии специалистов любого профиля очень мало. |
18 января 2012. Убираем баннеры с википедииСвободе слова настала SOPA. Примерно на это как бэ намекает нам википедия:
Я считаю что если кто-то делает сплеш баннер который блокирует частично или полностью содержимое сайта - он должен быть наказан. Вне зависимости от законопроектов. Т.е. если бы все страницы с википедии - стали бы пересылаться на сайт конгресса США (задосив его тем самым), то это было бы правильно, я считаю. Ну, подумаешь день сайт не работает. Но использование сплеш скрина который закрывает сайт после загрузки сайта - это моветон и чёрное seo. Я решила бороться с этим через следующие правила фильтрации AdBlock: |http://en.wikipedia.org/w/index.php?title=Special:BannerController* |http://ru.wikipedia.org/w/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BannerController* Расширение Adblock, если кто не в курсе служит для блокировки рекламы в Firefox и Chrome. Данные фильтры - возвращают доступ к английской википедии. Ну и заодно убирают грустные лица создателей с российской версии. Я считаю что когда википедия ограничивает мой доступ к статьям про Римский календарь, Делитель нуля, Процедурное программирование, Разделение ответственности, Дамаст, ECMAScript, Объекты первого класса, Boot to Gecko, Божественный объект, Прокрастинацию, Songket, Эритрею, Напалм, SATA и сериал Рим, тогда это хуже чем любая SOPA! С прошедшими праздниками вас! |
31 декабря 2011. С новым годом!Поздравляю всех с новым годом, желаю чтобы ваши проекты всегда были успешными, приносили много профита и знаний, и было время заняться здоровьем. С праздником! |
30 декабря 2011. Объекты, объекты-объекты; объекты? Объекты!Зомби зомби зомби. © Народная мудрость Developers! Developers! Developers! Developers! © Stiven Ballmer Речь в сегодняшней статье пойдёт в основном о яваскриптах, потому что именно их я преподаю сейчас стажёру нашей компании. Поэтому статья носит в основном методологический характер. Что такое объект?Поскольку яваскрипт, в Объект — Сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса или копирования прототипа (например, после запуска результатов компиляции и связывания исходного кода на выполнение). Заметьте, в довольно простое определения навязали адресное пространство, компиляцию, классы и прототипы. Это всё равно что спросить что такое птица, а в ответ получить что это сущность употребимая в пищу и вылупляющаяся из яиц! Объект — некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеет заданные значения свойств (атрибутов) и операций над ними (методов). Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые в свою очередь определяют поведение (являются моделью) объекта. Время с момента создания объекта (конструкция) до его уничтожения (деструкция) называется временем жизни объекта Я не читала таких определений, когда начала изучать яваскрипты, поэтому интуитивно они представляются совсем по другому. Это понятие класса должно строится на понятии объекта, а не понятие объекта строится на понятии класса. Объект — это сущность, которой можно посылать сообщения, и которая может на них реагировать, используя свои данные. Данные объекта скрыты от остальной программы. Сокрытие данных называется инкапсуляцией. Опять таки. В определении говорится об инкапсуляции. А что если данные объекта не скрыты? В прочем поскольку моя статья про яваскрипты, данное определение вообще никакой смысловой нагрузки не несёт. Объект в программировании, это такая штука, которая не всегда может иметь визуальное представление, типа кнопки или поля. Скорее наоборот. Объект — это массив, который может содержать в качестве переменных, кроме всего прочего, функции или другие объекты. Такое определение я призываю запомнить стажёров, потому что это именно то, с чем мы работаем в яваскриптах. Справедливости ради, хочется так же отметить определение из англоязычной версии. Оно довольно хорошее. The programming construct that combines data with a set of methods for accessing and managing those data is called an object. © en.wikipedia.org Такой вариант так же допустим для запоминания. А теперь мне хочется рассказать почему яваскрипт это целиком Объекты в JavascriptТеперь внимание, дальше вы можете запутаться! В яваскриптах — почти всё является объектами, но не всё называется объектами. Число — или строковая переменная (или сущность) — не называются сами по себе объектами! Но по факту — являются ими. Например у числа или строки могут быть встроенные функции.
var a = 'te.st';
var b = a.split('.'); // в b - будет массив из значений te и st
Чтобы понять сказанное выше утверждение, приведу такой аналог: «насекомые и птицы — не называются животными, хотя по факту являются ими». Далее, небольшая тонкость касающаяся массивов. В яваскриптах есть названия для классов объектов — строка, число, массив и, внимание(!), Объект. Так и приходится писать объект объект. новый массив можно создать например как: в объект массива — [] — мы можем записывать только числовые, строковые и булевы переменные. Ну и другие массивы тоже. В объект Объекта — мы можем записывать то же самое + функции. Пример:
var a = {1,2,3, 'my_func': function(){ do_something; } };
Обращу внимание, что функция будет доступна как элемент массива: a['my_func'](); и как метод объекта a.my_func(); — в принципе равнозначно, как кому нравится. Теперь внимание — массив, может содержать индексы элементов, Индексы в записи Объекта пишут так index:value, однако это не подходит для записи массива (спасибо SelenIT в комментариях), поэтому запись a= [1:'something', 2:'something']; — НЕ верна Но можно создать такой объект
var a = {'вася':'Пупкин'};
и обращаться к нему как к массиву alert(a['вася'])); Подробнее об этом написано в моей статье «Javascript — работа с массивами и объектами» (09.2009). Теперь я расскажу о функциях. Функции — так же как и строки, и числа, и Объекты, являются в
function test(){
// do_something;
this.x = 5;
}
тогда a = test().x; // равно 5
функция при этом выполняется, и может
<script>
function test(){
// do_something;
alert('test');
this.x = 5;
}
a = test().x;
</script>
присвоит переменной число 5 — и покажет alert(). Ссылки на объектыВ заключение, мне хочется в очередной раз рассказать об одной особенности языка Javascript связанной с операцией присваивания. Когда происходит присвоение переменной строки, числа или логической переменной, это создаёт копию этого значения. В то время как присваивание переменной массива или объекта создаёт ссылку на это значение. Это вызывает путаницу, Пример:
Об этом, и о том как копировать объекты и массивы, так же написано в моей прошлой статье «Javascript — работа с массивами и объектами». P.S. Так же очень хочу сказать что Джон Ресиг (создатель jquery если кто не в курсе), недавно выступил с отличной и правильной идеей преподавания javascript в качестве первого языка программирования. Пожалуйста прочитайте его статью: Яваскрипт как первый язык программирования.В ней он так же затрагивает некоторые вопросы методологии, и как и я подчёркивает то, что в яваскриптах всё, включая функции является объектами. Цитирую:
С удовольствием выслушаю ваши замечания по теме. |
29 декабря 2011. Родительский селектор в CSS 4Некий царь призвал трёх мудрецов и попросил объяснить следующий факт: С наступающим, дорогие друзья! Сегодня я зашла таки, на рекламированный Вадимом Макеевым портал Сама статья бесспорно хорошая, в ней говорится вообще о том как писать быстрый код, почему селектор потомков медленный, почему селектор родителя был бы ещё медленнее, однако не говорится почему собственно есть хоть одна причина такой селектор не сделать. Да, это будет медленно. Да, всем понятно что селектор по id самый быстрый. Но в любом случае мы говорим о миллисекундах машинного времени. Обычно этим можно принебречь если сайт нагружен картинками и потоковым видео. Собственно я бы не стала об этом писать если бы не прочитала ещё в сентябре черновик селекторов четвёртого уровня. Кроме селектора родителя, конечно добавилось много других новых, клёвых селекторов, которые отнимут у Джонатана Снука ещё лишние секунды жизни. ЗаключениеБезусловно, в тех проектах, в которых важна скорость работы в браузере — нет места подобным селекторам. Пример: проект, который я сейчас разрабатываю, расчитан на использования только в современных браузерах полностью исключая Спасибо что читаете мой блог! =) |
14 сентября 2011. Биты, байты, кодировкиПочти полтора месяца писала данную статью, но надеюсь оно того столило. Данная статья может выглядеть холиварной, поэтому не спешите писать комментарии пока не прочитаете полностью. Статья главным образом о методологии. Дело в том, что я твёрдо уверена, что в учебных заведениях по информационной специальности, школьникам и студентам забивают голову историей древнего мира вместо актуальных знаний. Все методички преподают дамы бальзаковского возраста, а пишут эти методички профессора возраста Карла Маркса. В результате от соискателей на работу, и от стажёров, я слышала такие забавные заблуждения, относительно фундаментальных основ, как:
В числе прочих забавных случаев: для выбора десяти случайных чисел из бд, соискатели десять раз делают запрос; для открытия файла на чтение используют в PHP флаг 'a+'; не умеют работать со строками, кодировками и указателями. Написать функцию, которая возвращает строку задом намерёд, не используя В этой статье, я хочу коснуться проблемы заблуждений с битами и байтами, и написать свою методику обучения этим фундаментальным знаниям.
|
13 сентября 2011. С днём программистаСобственно сабж. Поздравляю всех коллег с Днём программиста! Желаю чтоб код запускался без отладки, точки с запятой ставились сами, и лишние кавычки не попадали в БД. =) Всем JS-программистам и верстальщикам отдельно желаю чтоб заказчики не пользовались IE.
|
16 июля 2011. На комментарии теперь можно подписатьсяЗа эти выходные движок моего бложика приобрёл одну важную функцию, для меня и для вас, дорогие читатели — теперь мои ответы на ваши комментарии будут отправляться вам на почту. До этого блог не имел автоматического уведомления, когда я отвечала на Текущая реализация, сейчас удовлетворяет главную задачу — автоматически сообщать вам, когда я отвечу на ваши комментарии. Однако имеется и ряд недостатков:
Прошу читателей блога помочь мне найти ещё недостатки текущей реализации и придумать Спасибо. |
12 июля 2011. Основные ошибки проектирования процесса авторизацииPHP-программисты часто делают пару ошибок присущие авторизации, которые впрочем легко исправляются. Все ошибки описанные ниже были исправлены на рабочем сайте в течение получаса, написание статьи заняло у меня в 5 раз больше времени.
|
11 мая 2011. О геополитике, и о защите кодаДолго не писала, не отвечала на коментарии, и гостевую — была в отъезде. В предыдущем посте (Zend Guard пролетел…), коллега Bars задал вопрос, как быть если просят открыть код, до оплаты проекта, и как работать с западными заказчиками. О геополитикеСперва, немного проясню, читателям блога, и тебе, уважаемый Bars, что как и где. Самая благоприятная атмосфера для работы по сайтостроению сейчас в России, здесь очень большой спрос на сайты, который щедро оплачивается, особенно в Москве, даже мы иногда аутсорсим часть работы украинским коллегам. Средний российский фрилансер работает на Москву. Поскольку мы работаем с заказчиками тоже исключительно в Москве, они приезжают в офис, пьют кофе и все проблемы легко решаются. Сложнее обстоят дела на Украине, откуда судя по всему и пишет тов. Bars. Украинский внутренний рынок сайтостроительства вообще не насыщен, особенно по дизайнам (пруф. ищите ссылки на интервью А.Лебедева). Совсем тяжко сейчас в Белоруссии (Беларуси). Батька запретил всё, что только можно. Знакомые минчане очень переживают. Все банковские транзакции перекрыты. Перевод валют не осуществляется. Даже банк В странах Европы, ситуация поздоровее. Люди работают и на внутренний и на западный рынок. Как вести себя с заказчикамиСтатьи с примерно таким заголовком вам нужно читать в больших количествах. Легко отличить хорошие статьи от плохих, но прочитать критически стоит почти все. Также полезно практиковаться в риторике и прикладной психологии. Но самое полезное — это завести себе крутого менеджера, если у вас его ещё нет. Если вы делаете сайт Далее, что касается закрытости кода. Конечно можно его обфусцировать, но почти вся обфускация сводится к " У нас не утопия. Если у заказчика будет большой соблазн кинуть — он кинет. Настройте себя на эту мысль. Достаточно один (иногда два =)) раза наступить на грабли кидания, чтобы понять, в какой момент передавать свой код. Код, который вы уже написали — больше всего нужен заказчику, а не вам. Если заказчик не хочет платить — не отдавайте код. Умный заказчик купит готовый продукт охотнее и дороже, чем будет ждать разработки с нуля. Потому что пара недель простоя его бизнеса стоит гораздо больше, чем ваша пара недель. Он может ругаться, но не может не заплатить. Иначе убытки будут у него, а не у вас. Это основная идея — запомните её и никаких проблем не будет. |
Предыдущие записи, смотрите в архиве новостей » |



