Задать вопрос
  • Где грань авторского права в верстке?

    @AndreyMyagkov
    Вы что серьезно думаете, что даже если и нарушаете, то за 10 бачей вас вздернут?
    Нарушения нет, ибо в этой гомнотеме на гомнобутстрапе нет никакой ценности - это не новая технология, не научные изыскания, не музыка, не фото, это просто самый обыденный код, который делается за 3 часа.
    Ответ написан
    Комментировать
  • Есть у кого интересные задачи (преимущественно админские) для упражнений в bash?

    1. Банальное, первое что в голову пришло:
    Напишите скрипт бэкапирования данных на удалённую машину ( как частный случай - бэкап БД с заранее неизвестным кол-вом баз )
    Напишите скрипт который запускается по крону и считает кол-во уникальных записей из какого-нибудь лога ( access.log auth.log ) и отправляет вам на почту
    Напишите скрипт, который банит подозрительные IP
    Напишите скрипт который проверяет, что в нужном каталоге файлы не изменялись, можно с выводом изменённых файлов или даже изменённых строк в файле.

    2. Чуть круче:
    Подумайте, какая операция при работе с линуксом вам более всего не нравится и настройте её автоматизацию

    3. Еще лучше:
    Зайдите на www.opennet.ru/docs/RUS/bash_scripting_guide , выберите любой скрипт и попробуйте его улучшить
    Ответ написан
    2 комментария
  • $$$ что значит в php?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Это называется переменная с переменным именем (variable variable).

    class Foo {
      public $deepest = 'Limbo';
      
      public function __toString()
      {
        return 'deep';
      }
    }
    
    $deeper = 'deepest';
    $deep = 'deeper';
    $b = new Foo();
    
    echo $b->$$$b;


    Выражение выполняется справа налево:
    1. $b->$$($b) превращается в $b->$$($b->__toString()), поскольку именно так ведут себя объекты, когда на них пытаются натравить echo;
    2. $b->$$($b->__toString()) превращается в $b->$(${'deep'}), именно это значение возвращает метод __toString класса Foo, инстансом которого является $b;
    3. $b->$(${'deep'}) превращается в $b->$($deep), это как раз вызов переменной при помощи значения из другой переменной;
    4. $b->$($deep) превращается в $b->${'deeper'}, поскольку именно такое значение находится в переменной $deep;
    5. $b->${'deeper'} превращается в $b->($deeper);
    6. $b->($deeper) превращается в $b->deepest;
    7. наконец, получается значение свойства 'deepest' из $b, а там как раз хранится 'Limbo', оно и выводится в echo.

    dd178a12658f41679b71884846669132.jpg
    Ответ написан
    8 комментариев
  • Как лучше разместить розетки для телефона и локальной сети в офисе?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    1) Кабельканал делаете над столом (~10см). Кабельканал берете установочный с разделителем (слаботочка в одной половине, силовая - в другой). В кабельканал монтируете силовые (3 шт., лучше 4!) и компьютерные розетки (2 шт.).
    2) Для принтеров розеток 2х2 (силовые/rj-45)
    3) Очень чательно (очень, очень) рассчитывайте установку силовых розеток, их практически не перенести! Силовой провод должен быть без скруток и разрезов и промежуточных соединений и иметь минимальный запас! (это любой электрик скажет). Провод должен иметь нужное сечение! Единственно возможный вид установки - проходной через розетки.
    4) Все слаботочные провода должны быть завернуты на патчпанель в распределительной/серверной.
    5) По желанию (через 2-3 места), делают специальные силовые розетки, запитанные от второго автомата! Это для чайников/пылесосов, сечение соответствующее, выделяют их цветом (красным обычно)!
    6) Установочный кабельканал - любой фирмы, хоть Legrand, хоть DKM, хоть Efapel, от той же фирмы и все остальные принадлежности. Разницы большой между производителями не вижу, все трое хороши!

    Ну и конечно можно спускать кабеля с фальшпотолка. Но абсолютно все кабели нужно убирать в гофру там, где он проложен по потолку. Силовые, так вообще желательно в металлическую. В кабельканале такого делать не нужно! Не нужно из-за того, что кабельканал у нас неподвижен, а на потолке кабель у нас свободном-лежащий и есть вероятность, что его могут задеть и повредить (вероятность, увы, не маленькая, как оказывается!).

    Если делать прокладку под фальшпотолком, то гораздо лучше не просто кабель на потолок класть, а использовать кабельные лотки (кусок сетки с бортиком) по периметру, тогда гофра не нужна. Но нужно или два лотка (слаботочка, силовые) или силовой в гофре (на одном лотке) или лоток с разделителем. В этом случае снижать можно простым коробом с розетками на конце, или установочными стойками.

    Но как же гимморно потом под фальшпотолком суетиться...
    Ответ написан
  • Как организовать возможность какого-либо действия пользователя 5 раз в 3 суток?

    Не нужно никакого Cron`а и хранения попыток проголосовать.
    Создаете табличку, где будут логгироваться голоса:
    CREATE TABLE IF NOT EXISTS `votes_log` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `user_id` int(10) unsigned NOT NULL,
      `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    При попытке проголосовать делаете запрос в базу:
    SELECT COUNT(*) FROM `votes_log` WHERE date > DATE_SUB(NOW(), INTERVAL 3 DAY) AND user_id=?

    Этот запрос возвращает сколько раз проголосовал пользователь за последние 3 суток.
    Если меньше 5-ти - принимаем голос (и записываем в эту таблицу).
    Ответ написан
    4 комментария
  • Как коректно перевести на русский язык слово "Crate"?

    printf
    @printf
    Ем детей.
    Ящик и есть. Применимо к cargo — пакет, конечно. Этот прикол с ящиками существует практически только среди разработчиков пакетной подсистемы, например пакеты питона были сначала яйца (eggs), а теперь колёса (wheels), но на самом деле никто их так не называет же.
    Ответ написан
    Комментировать
  • Как коректно перевести на русский язык слово "Crate"?

    tuccar
    @tuccar
    Crate - это структурная единица компиляции.

    В языке Rust модель компиляции, концентрируется на объектах, именуемых крэйтами (crates). Каждый процесс компиляции обрабатывает одиночный крэйт в форме исходного кода, и если компиляция завершается успешно, то результатом её становится один отдельный крэйт в бинарной форме: либо выполняемый файл, либо библиотека.

    Крэйт (crate) в определённой степени является аналогом сборки (assembly) в модели ECMA-335 CLI, библиотеки (library) в SML/NJ Compilation Manager, unit в системе модулей Owens and Flatt или конфигурации (configuration) в Mesa.

    Крэйт - это единица компиляции и связывания (linking), а кроме того, системы контроля версий, дистрибуции и загрузки во время выполнения. Крэйт содержит дерево (tree) вложенных областей видимости модулей. Верхний уровень этого дерева - модуль, который является анонимным (без имени) (с точки зрения путей внутри этого модуля), а любой элемент внутри крэйта имеет канонический путь (module path), обозначающий его местоположение в дереве модулей данного крэйта.

    Вот здесь ссылка на более полную информацию: Модульная система и крэйты
    Ответ написан
    1 комментарий
  • Как правильно покупать web-дизайн?

    @micktub
    Дрогорой друг.
    Пишет тебе дизайнер, преисполненный опыта работы с заказчиками, которые, как и ты, не знают , как правильно "покупать дизайн". Взглянув на вопрос глазами человека с другой стороны баррикад, ты должен прояснить для себя этот вопрос.
    1. Дизайн - скорее инженерное решение задачи чем художественное творчество.
    2. Правильных решений может быть несколько.
    3. Хочешь несколько правильных решений от разных дизайнеров - заплати за все.
    4. Хороший дизайнер способен составить ТЗ вместе с тобой. ТЗ, которое составляет неопытный заказчик, чаще всего вообще нелья назвать техническим заданием. Больше похоже на пространные рассуждения на тему проекта.
    5. Больший функционал - больший бюджет.
    6. Если дизайнер говорит тебе "Эта штука будет в зеленом цвете просто потому, что я так вижу" или типа того, ищи другого дизайнера.
    7. Когда заказчик просит "сначала сделать джипег главной, а потом поговорим", нормлаьный дизайнер шлет его лесом, а остальные остаются и пытаются ухватиться за призрачную возможность хоть какого-то заказа. Нужно ли объяснять что по итогу ты будешь выбирать между плохим дизайнером и теми что еще хуже?
    8. Большинство дизайнеров не работает без предоплаты. Исключение - "безопасные сделки". Если предоплата совершена, но вы не сработались, а время уже потрачено, робота уже проделана, никто вам предоплату не вернет. Дизайнер тоже хочет есть.
    9. Заказчик платит за дизайн, а не покупает дизайнера в рабство для постоянных исправлений проекта в будущим. Если решена задача, стоящая в ТЗ - сотрудничество закончено кроме отдельно оговоренных (и оплаченных) случаев.
    10. В студии дизайн тебе делает дизайнер. Точно такой же как фрилансер, только сидя не у себя дома а в офисе.
    Успехов, дорогой друг.
    Ответ написан
    Комментировать
  • Существуют ли нормальные генераторы фронтенд приложений?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    нет
    Ответ написан
    Комментировать
  • Как правильно покупать web-дизайн?

    mikelazarev
    @mikelazarev
    Отвечу как дизайнер, за себя опять же. Может быть будет полезно другим дизайнерам, и заказчикам, конечно же.

    В первую очередь - вы покупаете мое время. Сначала я выясняю у вас что там к чему. Зачем вам сайт, какие цели вы перед собой ставите. Короче, как вам помочь. Затем я определяю сколько времени я на это потрачу. Рассчитываю это исходя из прошлого опыта, по дням (рассчитывая что в каждом дне у меня 8 рабочих часов). Беру предоплату 50%.

    Я трачу свое время на:
    - research (анализ конкурентов, потребностей, разговор с клиентом итд)
    - разработку и утверждение прототипа
    - отрисовку сайта и утверждение экранов
    - верстку (если необходимо)
    - на переговоры, конечно же, во всех этих стадиях

    В работе я использую InVision (проектирование, визуализация, анимация), Basecamp (обсуждение, планы, согласование), Photoshop, Sketch (визуализация)

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

    Это мой первый ответ на Toster, кстати )
    Ответ написан
    3 комментария
  • Почему не индексируется сайт Яндексом?

    zooks
    @zooks
    Frontend
    Яшка жуткий тормоз и ретроград. Если через месяц после отправки не проиндексируют - пишите письма Платонам (в поддержку Яндекса).
    Ответ написан
    Комментировать
  • Какова архитектура крупных приложений на низкоуровневых языках?

    MarcusAurelius
    @MarcusAurelius
    автор Impress Application Server для Node.js
    ООП это не архитектура, а парадигма. Скорее всего Вы хотели спросить, какие есть паттерны проектирования в парадигмах процедурного и структурного программирования. Перечислю кратко: модули (структурные блоки, библиотеки, часто построенные в иерархическую систему при помощи dependency injection), интерфейсы (наборы экспортируемых функций, которые видны снаружи модуля), шаблоны (функции, абстрагированные от типов данных, при помощи которых парадигма обобщенного программирования позволяет порождать типизированные реализации), слои (как ни странно, но до ООП тоже были абстракции, они реализовывались при помощи принципа разделения модулей на слои, т.е. группы модулей, реализующие более низкоуровневые или более высокоуровневые задачи, программирование обычно начинается с самого высокого слоя абстракций, из него можно использовать только вызовы на 1 слой ниже, но не на 2 слоя, т.е. нельзя смешивать абстракции и пропускать слои, обращаясь, грубо говоря, от нажатия кнопки сразу к кластеру на диске), заглушки (должны Вам должны быть известны, это функции и модули без реализации, необходимые чтобы запускать и отлаживать еще не дописанную программу, они могут выводить вызовы к ним на экран или в логи, а состоять только из возврата правдоподобных но не настоящих данных). Так же есть много паттернов структур данных, которые тоже очень сильно упрощают жизнь, если выбрать определенную их реализацию для своего проекта и придерживаться принципа однородности структур данных, например, не использовать две разные реализации двусвязных списков в одной программе (или модуле). Структуры данных вполне заменяют объекты, более того, работают они несравнимо быстрее, не создают проблемы неоднозначности моделирования, как в ООП например, когда Вы не можете решить, где должен находиться метод "сесть" у "жопы", у "стула" или у их общего контейнера "мир", в котором это происходит. Распространенные структуры данных: набор полей, список (в т.к. односвязный, двусвязный, циклический и т.д.), стек, дерево (тоже может быть от односвязного до пятисвязного с вариациями), множество, очередь, ассоциативный массив и хеш-таблица. Все, устал писать, рекомендую почитать Дэйкстру, Вирта, Кнута. А смириться с отсутствием ООП может помочь занятная статья в стиле холиварного срача: blogerator.ru/page/oop_why-objects-have-failed
    Ответ написан
    Комментировать
  • Как обучиться созданию правильной архитектуры сайта?

    iiifx
    @iiifx
    PHP, OOP, SOLID, Yii2, Composer, PHPStorm
    Я хотел вам написать про использование чужого опыта, чтения множества скучных книг, изучения чужих архитектур и много-много пота. Но потом увидел вот эту строку:
    только не фрейворки, их разбирать самому сложно и не всегда хватит сил не полениться

    и понял, что не нужно ничего писать.
    Ответ написан
    3 комментария
  • Переводчикам нечего ловить на фрилансе?

    Spetros
    @Spetros
    IT-шник
    Что она делает не так?

    Очевидно, она не хочет работать за "полбанана".
    Ответ написан
    Комментировать
  • Как переквалифицироваться из эникейщика в программиста?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    23 года? И столько тлена в словах? Ну ловите мою кулстори, у меня тлена в 23 было куда больше...
    Чуть менее двух лет назад, летом 2013, мне было 23, и я имел НОЛЬ опыта работы (если не считать 2 месяца стажерства в магазине комп техники по практике от универа). Кое-как устроился seo-шником в местную веб-студию, даже не зная что это за работа, во время отправления резюме (гуглил после уже). Конечно, как только приступил к работе, сразу понял что seo это не мое, но это помогло мне через 3 месяца на том же месте стать веб-джуниором. И вот я стал джуном, имея за плечами 4 курса на codecademy и одну, плохо прочитанную, книгу. С космической зп в 12к рублей! Через 5 месяцев я уже приступил к работе по удаленке с другими людьми, где платили 30к, и при этом можно было работать по 15-25 часов в неделю. Это позволило мне читать все интернеты на тему фронтенда, а потом, самое важное, пилить демки на кодпене, засиживаясь до ночи. В марте уволился, отдохнул, и в апреле начал очень лениво заполнять профили на зарубежных фриланс биржах. А потом на меня внезапно свалилось подобие сарафана из-за моих демок, и люди просто стали писать мне с предложением что-нибудь запилить, хотя профили я так и не запилил на биржах. Сейчас пилю 2 проекта, с рейтом в 30$/h, для клиентов пустяковая цифра, а для моего Архангельска это вообще какой-то криминал :)
    Ну а вам, с вашим имеющимся бэкграундом, вообще не знаю чего бояться. Проблемы могут быть, только если окажется что программирование это "не ваше". Если же вы любите это дело, то просто садитесь, и начинайте пахать. В первую очередь на свое саморазвитие, поначалу я бы даже посоветовал искать что-то с удобным графиком/местом работы, ибо "неудобная" офисная жизнь убивает весь энтузиазм как правило. А без энтузиазма на старте никуда не уехать.
    Ответ написан
    16 комментариев
  • Как переквалифицироваться из эникейщика в программиста?

    zolt85
    @zolt85
    Программист
    Всем привет, это снова я.
    Молодой человек! Вам 23! ВСЕГО! А Вы уже как я, по-старчески, ворчите. Я таких как Вы, вижу ежедневно. Сейчас поясню. В моем городе туго с программистами, хотя город молодежный, продвинутый (в Томске я живу). Мы постоянно ищем людей, сейчас в сторону удаленных разработчиков уже смотрим, потому что на собеседования приходят такие как Вы. Не в плане опыта, а в плане запросов. 23 года, опыта никакого нет, но нужно мне минимум 40 тыр. Родной! За что? Пойми, чтобы понять какой-ты как разработчик, с тобой нужно поработать пару месяцев, а в среднем первый "выхлоп" от тебя будет только через полгода. Поэтому такой мой Вам совет, если хотите развиться как разработчик, стисните зубы, объясните все жене, и идите джуниором. Лучше в Java или C#. Набирайтесь опыта. В нашей сфере работодатели в основном адекватные и видят, когда от Вас уже есть толк. И не стесняются повышать ЗП.

    Удачи Вам!
    Ответ написан
    13 комментариев
  • Что более перспективно?

    zolt85
    @zolt85
    Программист
    Хватит болтать, покажи нам свой код! (с)

    Я с Вас поражаюсь, Вы действительно на столько круты, что можете выбирать? Даю палец на отсечение, что Вы ни черта не знаете в программировании (без относительно языка программирования). Делить разработчиков на frontend/backend это какая-то модная чушь, от стартаперов-хипстеров. Разработчик прежде всего должен быть инженером! Универсалом, если хотите.

    Перестаньте спрашивать "Что делать?" на тостере, а просто идите и делайте то, что считаете нужным!

    Ладно, это старческое ворчание. По существу. Вы правы, все хотят middle или senior разработчиков на java вакансиях, и это обоснованно. Т.к. беря junior-а, Вы прикладываете усилия на его обучение. Скажу за себя (я такой твердый middle с обязанностями senior-a), если я вижу, что junior свалит как только я его научу, я его сам выгоняю. А многие junior-ы прямо говорят - я пришел к Вам набраться опыта, перед покорением других вершин. Ну и зачем мне такой junior? Мне нужны люди, которые будут тащить проект, выводить именно мой проект на новые вершины! Вам в первую очередь должно быть интересно само ремесло программистское, и если Вам оно интересно - Вы будете на расхват в любой конторе, на любом стеке технологий.

    Удачи!
    Ответ написан
    10 комментариев
  • Code Review, как это фактически происходит?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Вот хороший ответ на Ваш вопрос: habrahabr.ru/post/142564
    На мой взгляд, CR - единственное средство борьбы с трудно уловимыми ошибками, которые обычно не удаётся воспроизвести на тестах, и которые вследствие хитрого сплетения обстоятельств не дают спокойно работать нашим пользователям.
    Причём у нас три уровня борьбы, на каждом из которых используется CR: при детальном конструировании архитектор или ведущий разработчик анализирует готовый код на предмет корректного вмешательства в его работу (принцип "не навреди") и на предмет повторного использования готовых компонентов, затем после реализации проводится обзор кода на предмет его оптимальности и детального понимания принципов работы реализованного компонента (последнее важно для разработчиков, которые будут использовать компонент при дальнейшей работе над кодом), и, конечно, при диагностике сбоев системы.
    Ответ написан
    Комментировать
  • Преимущество дружественных функций?

    @monah_tuk
    Когда нужно обеспечить некий доступ к внутрянке, при этом не выставляя её полностью наружу. Функция же может быть определена пользователем. Тем самым мы можем несколько повлиять на логику класса, не изменяя его интерфейсов и не вмешиваясь в бинарный код. Где такое может пригодиться? На вскидку:
    1. Юнит-тестирование
    2. При определении операторов (особенно всяких сложений, вычитаний)
    3. Собственно, изменение, в определённых пределах, поведения класса без наследования (но можно получить палкой, когда внутренняя структура поменяется).

    Но вообще, как это не гуглится? Гуглится!

    1. www.cprogramming.com/tutorial/friends.html последний абзац:
    friend and Encapsulation
    Some people believe that the idea of having friend classes violates the principle of encapsulation because it means that one class can get at the internals of another. One way to think about this, however, is that friend is simply part of a class's overall interface that it shows the world. Just like an elevator repairman has access to a different interface than an elevator rider, some classes or functions require expanded access to the internals of another class. Moreover, using friend allows a class to present a more restrictive interface to the outside world by hiding more details than may be needed by anything but the friends of the class.

    Finally, friends are particularly common in cases of operator overloading because it is often necessary for an overloaded operator to have access to the internals of the classes that are arguments to the operator.


    2. www.cplusplus.com/doc/tutorial/inheritance
    Typical use cases of friend functions are operations that are conducted between two different classes accessing private or protected members of both.


    3. stackoverflow.com/questions/17434/when-should-you-...

    В остальном, если что-то можно сделать без френдов - сделайте без них.
    Ответ написан
    1 комментарий