• «Бесконечно» вложенный массив

    hell0w0rd
    @hell0w0rd
    Просто разработчик
    function str_tree($arr, $i = 0)
    {
    	$res = array();
    	if( isset($arr[$i]) ){
    		$res[] = $arr[$i++];
    		$res['sub'] = str_tree($arr, $i);
    	}
    	return $res;
    }
    

    Вот рекурсивный вариант
    PS даже второй:
    function str_tree($arr, $i = 0)
    {
    	return isset($arr[$i]) ? array($arr[$i++], 'sub' => str_tree($arr, $i)) : NULL;
    }
    
    Ответ написан
    7 комментариев
  • Кто как борется с паролями на бумажках рядом с ПК?

    Maximus43
    @Maximus43
    У нас есть специально обученный человек, в должности офицера по безопасности (Security Officer), который регулярно проходит по рабочим местам и смотрит на незакрытые сессии, пароли на бумажках и т.д. Если найдет компьютер без надзора с отрытым доступом или бумажки с паролями, то он открывает почту с компьютера сотрудника и пишет что-либо от его имени. На первый раз это может быть рассылка всем сотрудникам сообщения типа: «Я самый крутой, а вы все лохи». Типа шутка такая, но действует на 99%. Если же человек попался во второй раз (у нас было всего один раз), то безопасник пишет с компьютера сотрудника письмо в отдел кадров с просьбой перенести отпуск на конец ноября. Третьего раза у нас не было. :-)
    Ответ написан
    3 комментария
  • Мгновенные личные сообщения для сайта?

    evgentus
    @evgentus
    Директор OBS Group
    Как то игрался с Dklab Realplexor.
    Очень хорошо он себя показал, на большом кол-ве подключений не было возможности испытать. Но 40-50 пользователей было.
    На самом минимальном тарифе firstvds это все было (да и щас лежит). Процессор и память не жрал. По стабильности, уже 90 дней работает без сбоев.
    Ответ написан
    Комментировать
  • Мгновенные личные сообщения для сайта?

    AloneCoder
    @AloneCoder
    [object Object]
    Dklab Realplexor прекрасно проявит себя в этом амплуа
    Ответ написан
    Комментировать
  • Какой айпад выбрать для тестирования?

    egormerkushev
    @egormerkushev
    iOS разработчик, автор PixelMixel
    Вам просто очень обязательно надо протестировать приложение на iPad 1, если только ваше приложение не iOS 6+. На первом айпаде очень мало RAM — всего 256 MB. Из-за этого приложение, потребляющее более 80-90 мегабайт с большой долей вероятности упадет во время работы. Сам много времени провел за оптимизацией работы с памятью на айпаде в своих проектах.
    Ответ написан
    1 комментарий
  • IMac 27" (2011) странно себя ведет во время "сна"?

    IvanFF
    @IvanFF
    Обновите до сервера и он у Вас вообще спать перестанет :)

    А вообще, мало ли что он там ночью захотел посмотреть? Видимо бывает, что настолько цепляет — что до утра не уснуть. А о Вас он заботится — экран не включает. Цените. А мог бы ведь и экран включать и соответственно звук. А там такое.
    Ответ написан
    Комментировать
  • Парадокс в JavaScript с точки зрения PHP-кодера

    avalak
    @avalak
    JavaScript Garden: Равенство и сравнение

    Слабая типизированность языка JavaScript подразумевает приведение обеих переменных к одному типу для того, чтобы произвести сравнение.

    console.log(2 == true); // false. int boolean
    console.log(!!2 == true); // true. boolean boolean
    console.log(2 ? true : false); // true. boolean
    
    Ответ написан
    6 комментариев
  • Как выполнить функцию по окончании анимации?

    sdevalex
    @sdevalex
    initialize: function (elem) {
        //...
        this.addEvent('complete', function(){ ... });
    },
    
    Ответ написан
    3 комментария
  • Где и как научиться веб-дизайну, будучи программистом?

    Wott
    @Wott
    я нифига не дизайнер, такой же программист-фрилансер и такая же проблема была у меня лет пять назад
    я для себя разделил «дизайн» сайта на три фазы:
    1 придумать что-то типа концепции или общей картины что будет и где, какие блоки, какие страницы
    2 детализовать концепцию до макетов страниц — часто приходит программисту в виде картинок
    3 придумать как это будет верстаться и сделать, то есть допилить до состояния как на картинке в пункте 2

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

    Второе — это чисто навык работы с изображениями и инструментами по работе с ними. Плюс фантазия и талант «сделать красиво». У меня таланта нет, фантазия тоже в этом плане хромает, так что я либо делаю какими-нить прямоугольниками, либо подсматриваю детали на других сайтах. С изображениями работать могу, но не люблю это дело, так что ищу сеты изображений, если надо, а лучше совсем без них — минимализм наше все

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

    Как научиться? как всегда — делать, пробовать и разбирать что и почему не так. Я для начала делал всякую фигню. Потом смотрел и переделывал. И опять и снова. У моей домашней странички было что-то около 20 вариантов. Причем некоторые я переверстывал. Последний держиться уже пару лет, но уже хочется что-то изменить, но пока не сформулировалась концепция что и во что менять.

    Книги и курсы я не могу посоветовать, потому что с ними у меня не складывается. Редко попадается книга, которая стоит времени, потраченного на нее. А курсы… в общем также. Я вообще стараюсь извлекать знания из того что попадается — увидел сайт — глянь код, но подготовленные к употреблению «блюда» вызывают разочарование.
    Ответ написан
    1 комментарий
  • Как организована система оповещений а-ля Вконтакте?

    ilyaplot
    @ilyaplot
    PHP программист
    Видел на хабре кроссбраузерное решение — опрос файла, отдаваемого легким web сервером с чтением заголовка modified. Если изменен — читаем. И зачем держать множество постоянных соединений?
    Ответ написан
    Комментировать
  • Как организована система оповещений а-ля Вконтакте?

    @egorinsk
    У вас же браузер есть. Заходим на vk.com и видим, что, например, в Опере, шлются long-polling запросы на qNN.queue.vk.com/im305, куда посылается id пользователя, хитрый ключ, временные метки, в ответ приходит код вида ([{«ts»:«1567120607»,«events»:[]}

    Очевидно, у них развернута сеть серверов, на которых висят демоны, не знаю, на какой технологии, может Си, может Node.JS, может еще что-то, которые, с одной стороны, принимают запросы от клиентов, с другой стороны, получают уведомления.

    Думаю, в коде проще всего при каком-то событии (например, отправка сообщения/добавление в друзья) параллельно этому демону посылается уведомление, и он ретранслирует это обновление заинтересованным пользователям.

    Если бы мне нужен был такой демон, я бы взял для разработки язык D и библиотеку libev.

    Но вы можете попробовать такой демон на PHP написать, я думаю, 10-20 одновременных пользователей он точно выдержит. Или можете взять уже готовый демон — PHP Multiplexor или как-то так, от DKLab.
    Ответ написан
    2 комментария
  • Как почитать статью удаленного пользователя на хабрахабре?

    freeek
    @freeek
    Кстати, говорят, что Boomburum позавчера сообщил довольно любопытное сведение, что к постам остаётся доступ, если ручками вхитрую поменять урл к постам юзера!
    Ответ написан
    2 комментария
  • Где порубить дрова в Спб? (не шутка)

    Roosso
    @Roosso
    Нетипичный программист
    Несколько лет назад был в Питере и с друзьями поехали отдыхать загород. Были 3 дня в Лосево. Там куча всяких кемпингов. А потом поехали до Выборга, а оттуда до Каменногорска (http://maps.yandex.ru/-/CVauRF7J). Нашли там по объявлению женщину, которая нам сдала свою дачу в Возрождении (http://maps.yandex.ru/-/CVauRJnC)
    Вообще вода и электричество там чисто номинальные. На озере куча плоскодонок и лодок (главное вернуть их на место) и самые красивые леса, утесы, что я видел. И вода чистая и отличная.

    И вообще места там отличные…
    Ответ написан
    Комментировать
  • Чем организовать удаленный доступ к OS X для разработчиков?

    Lerg
    @Lerg
    Defold, Corona, Lua, GameDev
    Выслать им маки или деньги на них?
    Работать всё время через сеть весьма некомфортно, уж лучше хакинтош поставить.

    У мака встроен VPN сервер. Есть ещё сервис macincloud.com.
    Ответ написан
    2 комментария
  • Почему Chrome убирает адрес при отмене загрузки страницы [closed] ?

    eaa
    @eaa
    Тут похоже логика гугла — если страница не загрузилась, то о введенном УРЛ не может быть и речи, ибо страницы-то нет :)
    И есть такие смутные подозрения, что это завязано на секурити, чтоб кто-то как-то хитро урл не подменил, но это пока что только мои подозрения, основанные на кусочках информации, тут я не уверен на 100%.
    Ответ написан
    5 комментариев
  • Чем почистить систему?

    @FOXHOUND
    Я раньше использовал ccleaner — бесплатная утилита, чистит диск и реестр.
    Ответ написан
    Комментировать
  • Какой JavaScript framework облегчающий написание объектно-ориентированного кода посоветуете?

    Я запросто юзал MooTools.Class паралельно с jQuery. Вполне себе решение)
    Ответ написан
    Комментировать