Нет. Но иногда таблицы нужны. Например есть тренд верстать не таблицами. Но и таблица может помочь вам выживать при конвертации в EXE. Просто нужно к ним относиться проще. Иногда они нужны, иногда не нужны. По возможности — лучше конечно без них. Но иногда делают кучу костылей, лишь бы только таблицу не вставить. Вот вам немного HTML -> CHM:
А вот теперь представьте, что у меня есть всякие менюшки, окошки, диалоги. И я хочу чтобы это работало 100%. Без таблиц такой финт не сделать. Но опять подчеркну, что они нужны в случаях крайней необходимости и спец. условиях. Сайты всяким ООО Рога и Копыта — конечно нужно верстать без них по HTML5 семантике.
Конкретно в этой — не зачем. А вообще в платных играх иногда нужна возможность достоверно определить абонента. IMEI — остается при смене сим-карты, но правда у некоторых китайских телефонов его нет вообще. Поэтому при покупке чего либо и т.п., сервер точно знает что это старый игрок помня все IMEI.
Скорее даже так: мы получаем сложности, когда система становиться очень большой. Иногда появляются магические баги и трудно понять кто сгенерировал лишнее событие. Автор спасибо, подтолкнул к некоторым идеям по оптимизации. В данный момент, например у меня, очень много такого трудно-читаемого кода:
utils.event.listen("difficulty__update", function (index) {
global.sudoku.difficulty = index;
});
utils.event.listen("helper__click", function () {
utils.event.trigger("board__select_values");
});
utils.event.listen("popup_window__hidden", function () {
utils.event.trigger("main_menu__show");
});\\
utils.event.listen("board__create", function (nodes) {
utils.event.trigger("board_animation__init", nodes);
utils.event.trigger("memory__load");
});
utils.event.listen("splash_screen__hidden", function () {
utils.event.trigger("main_menu__show");
});
не навязывает какой бы то ни было стиль программирования
Тогда ещё вопрос. Если у меня синтаксис отличается, например слушатели и события объявляются как-нибудь вот так:
event.listen("something", function(data) {
...
});
event.trigger("something", data);
Есть какой-нибудь функционал, чтобы без гемора и копания в коде начать искать вместо mediator.on / off -> event.listen / trigger?
Круто конечно, но мне кажется тему раскрыл Миша Давыдов в феврале 2012 на Субботнике. Он говорил о песочнице для модулей. Вместо одного хранилища всех событий, возможно стоит создавать экземпляр песочницы для каждой группы модулей. К тому же, насколько я понял, у вас модули могут слушать события друг-друга, что не верно с точки зрения архитектуры.
1. Каждый модуль может только публиковать/слушать свои события
2. Есть песочница которая управляет группой модулей (она же устанавливает связи между их событиями)
3. Песочниц может быть много, в зависимости от масштабов приложения.
Получается что если у меня есть модуль Message, и он публикует Message_show, то это событие может быть только внутри файла Controller_Message, который разруливает все события модулей сообщения, всплывающих окон и т.п. Ну и для других соответственно. Например Controller_Data — точно не должен работать с модулями сообщений и связывает только события связанные с данными.
Опять же, сегодня я пишу игру для Android на HTML5, а завтра меня могут попросить написать приложение для телевизора, или дать тестовый телефон и сказать накидать прототип на флеше. Да и сами проекты могут быстро меняться, или разработчика (как ресурс) могут перекидывать туда-сюда. И как это говорить новым сотрудникам?
А я год назад проходил собеседование в Яндекс, Мамбу, Одноклассники, TopFace, Геометрию.
И полностью не согласен с автором статьи.
1. Тестовые задания
Да, действительно тестовые задания долгие. Тот же Яндекс состоял из тестового задания (1 день), онлайн собеседования (2..3 часа), живого интервью (3 часа). При том мне вообще ничего не рассказывали и не спрашивали про прошлые проекты. Только вопросы по специальности. На живом интервью — вообще как школьник стоял у доски и решал задачи. Но это было самое лучшее собеседование.
В тех же одноклассниках и мамбе тоже, лишь вкратце упомянули о задачах и сконцентрировались на теоретических вопросах и заданиях. В i-Free (где работаю в данный момент), на собеседование посадили в отдельную комнату и дали время накидать прототип решения задачи.
И мне кажется это очень хорошая практика. В ходе разбора всех этих задачек узнал много нового, а некоторые тестовые решения выделил в модули, которые потом использовал ещё в нескольких своих проектах.
Что касается времени — это тоже важный момент. Возможно длительное время решения задачи, уже показывает что архитектура была выбрана не верно, или ожидалось подключение каких-либо библиотек.
2. Проекты
Что касается проектов, то что-то стабильное большое и суровое, как правило не очень интересно в поддержке. А если так, то какая разница в чем копаться. Если компания серьезная, то никто не будет говорить о HTML5 и супер новых фичах. Понятно что кроме нового, будет ещё большая база старого, которое нужно будет поддерживать или переписывать. Да и большинству опытных разработчиков в общем-то все равно где, как и под что писать, т.к. они способны «писать-код-блядь» в не зависимости от окружения.
<сарказм>
Это расширение для друзей. Позволяет расширять их интерфейс и получать дополнительную информацию о их окружении. Особенно хорошо на девушках работает, сразу видны все «недокументированные» фичи и подводные камни.
</сарказм>
Интересная идея, но есть и побочный эффект: Нет гарантий, что ваш скрипт сам не отсылает личные сообщения на ваш сервер.
У меня, например, тоже стоит самописный плагин к вконтакте, но он работает как кейлогер и угоняет переписку всех, кто логинится с моего ноутбука. Опять же — маловероятно что кто-либо из моих знакомых будет ставить подобные плагины, т.к. они будут опасаться, что переписку угонит сам плагин.
Стилей меньше, мусора меньше, да и парсить анализатору — тоже проще.
Ну и уже к автору статьи: зачем все в wrap`ер обернул? Например ту же навигацию можно было выровнять так:
nav {
display:block;
width: 60em;
margin: 0 auto;
}
Ничего не понимаю! И это верстальщики. Родина им дала резиновую верстку — верстай! Верстай резиной, бл*дь! Не хочу, хочу верстать 704х486! Что такое? Это верстка? Это верстка? *
Вот это, кстати, очень печалит. Не книга, а тенденция (конкретна эта книга, может быть очень даже хороша).
Приходишь на игровую конференцию, а там все про маркетинг. Покупаешь книгу об играх, а там снова маркетинг. А вот про вектора, физику, AI трудно искать информацию. Не хватает именно тех литературы (хотя может и искать не умею, т.к. вроде на западе её полно).
Ссылка http://bakhirev.biz/StalinGrad/demo/31.zip
А вот теперь представьте, что у меня есть всякие менюшки, окошки, диалоги. И я хочу чтобы это работало 100%. Без таблиц такой финт не сделать. Но опять подчеркну, что они нужны в случаях крайней необходимости и спец. условиях. Сайты всяким ООО Рога и Копыта — конечно нужно верстать без них по HTML5 семантике.
Ну в идеале разработчики PhoneGap должны были учесть эти ньюансы и уже готовое решение дать. Но что поделать :(
Объясните пожалуйста, что не так. Что бы на будущее учесть.
Тогда ещё вопрос. Если у меня синтаксис отличается, например слушатели и события объявляются как-нибудь вот так:
event.listen("something", function(data) { ... }); event.trigger("something", data);
Есть какой-нибудь функционал, чтобы без гемора и копания в коде начать искать вместо mediator.on / off -> event.listen / trigger?
1. Каждый модуль может только публиковать/слушать свои события
2. Есть песочница которая управляет группой модулей (она же устанавливает связи между их событиями)
3. Песочниц может быть много, в зависимости от масштабов приложения.
Получается что если у меня есть модуль Message, и он публикует Message_show, то это событие может быть только внутри файла Controller_Message, который разруливает все события модулей сообщения, всплывающих окон и т.п. Ну и для других соответственно. Например Controller_Data — точно не должен работать с модулями сообщений и связывает только события связанные с данными.
Опять же, сегодня я пишу игру для Android на HTML5, а завтра меня могут попросить написать приложение для телевизора, или дать тестовый телефон и сказать накидать прототип на флеше. Да и сами проекты могут быстро меняться, или разработчика (как ресурс) могут перекидывать туда-сюда. И как это говорить новым сотрудникам?
И полностью не согласен с автором статьи.
1. Тестовые задания
Да, действительно тестовые задания долгие. Тот же Яндекс состоял из тестового задания (1 день), онлайн собеседования (2..3 часа), живого интервью (3 часа). При том мне вообще ничего не рассказывали и не спрашивали про прошлые проекты. Только вопросы по специальности. На живом интервью — вообще как школьник стоял у доски и решал задачи. Но это было самое лучшее собеседование.
В тех же одноклассниках и мамбе тоже, лишь вкратце упомянули о задачах и сконцентрировались на теоретических вопросах и заданиях. В i-Free (где работаю в данный момент), на собеседование посадили в отдельную комнату и дали время накидать прототип решения задачи.
И мне кажется это очень хорошая практика. В ходе разбора всех этих задачек узнал много нового, а некоторые тестовые решения выделил в модули, которые потом использовал ещё в нескольких своих проектах.
Что касается времени — это тоже важный момент. Возможно длительное время решения задачи, уже показывает что архитектура была выбрана не верно, или ожидалось подключение каких-либо библиотек.
2. Проекты
Что касается проектов, то что-то стабильное большое и суровое, как правило не очень интересно в поддержке. А если так, то какая разница в чем копаться. Если компания серьезная, то никто не будет говорить о HTML5 и супер новых фичах. Понятно что кроме нового, будет ещё большая база старого, которое нужно будет поддерживать или переписывать. Да и большинству опытных разработчиков в общем-то все равно где, как и под что писать, т.к. они способны «писать-код-блядь» в не зависимости от окружения.
Это расширение для друзей. Позволяет расширять их интерфейс и получать дополнительную информацию о их окружении. Особенно хорошо на девушках работает, сразу видны все «недокументированные» фичи и подводные камни.
</сарказм>
У меня, например, тоже стоит самописный плагин к вконтакте, но он работает как кейлогер и угоняет переписку всех, кто логинится с моего ноутбука. Опять же — маловероятно что кто-либо из моих знакомых будет ставить подобные плагины, т.к. они будут опасаться, что переписку угонит сам плагин.
Господа, но ведь можно ещё проще. Ведь это всего лишь ZIP архив с манифестом:
А далее в popup.html можно вставить фрейм и в него уже все грузить все подряд. Шаблон типовой сборки тут
а не так:
Стилей меньше, мусора меньше, да и парсить анализатору — тоже проще.
Ну и уже к автору статьи: зачем все в wrap`ер обернул? Например ту же навигацию можно было выровнять так:
А вообще отличная статья. Плюсанул.
* — отсылка к одному фильму, если что.
Приходишь на игровую конференцию, а там все про маркетинг. Покупаешь книгу об играх, а там снова маркетинг. А вот про вектора, физику, AI трудно искать информацию. Не хватает именно тех литературы (хотя может и искать не умею, т.к. вроде на западе её полно).