Задать вопрос
  • С++ или backend?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    42
    Ответ написан
    Комментировать
  • Почему в вакансии слишком много требований или это стандартные требования?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    "по должности модератор сайта"
    Ваша должность модератора по идее никак и не связана с разработкой.

    Если бы вы год не модерировали, а писали код, для вас не было бы сложностью изучить какой-либо js фреймворк, css, получить опыт с VCS, с git и так далее.

    В вакансиях перечислены среднестатистические требования к уверенному джуниору - начинающему мидеру.
    Ответ написан
    Комментировать
  • Как устроена авторизация по паролю в web-приложениях?

    @Alexander1705
    Обычно разделяют сессии и авторизацию:

    Сессия. Чтобы реализовать сессии сервер при первом соединении с клиентом может генерировать некоторый случайный токен и устанавливать его в куки. Тут важно, что куки должны передаваться по защищённому каналу (HTTPS). Таким образом можно сохранять некоторую информацию о сессии в базе данных или же в самих куки, но тогда нужно подписывать куки, чтобы пользователь не мог их изменять.
    В любом случае, сервер будет хранить информацию о активных сессиях в БД.
    Подписать куки можно, например, добавив в них помимо нужной вам информации какой-нибудь HMAC.

    Авторизация. Сервер никогда не хранит пароли. В базе данных хранят логин и хеш пароля (на самом деле нет). Для авторизации пользовтель передаёт логин и пароль (HTTPS). Сервер вычисляет хеш от пароля и, если он совпадает, сессия помечается как авторизованная.

    Соль. Теперь представим, что вы действительно храните логин и хеш пароля в таблице:
    login | pass_hash
    ------+----------
    vasya | 4B32E1C...

    В идеальном мире это бы неплохо работало. Но в реальном мире 90% ваших пользователей будут иметь пароль вида 12345, password, password123, etc. Соответственно в базе данных будет много одинаковых хешей и злоумышленнику не составит труда быстро подобрать пароли большинства ваших пользователей.
    Для этого для каждого пользователя сервер сохраняет некоторые уникальные случайные данные (соль). А вместо хеша пароля хранится hash(pass + salt).
    login | salt   | hash
    ------+--------+-----
    vasya | 4B3... | 2A3B9...

    Таким образом усложняется перебор паролей по словарю.

    Хеш. Возможно вы где-то видели или слышали про MD5. Так вот, MD5 на сегодняшний день не является надёжной криптографической хеш функцией и даже если вы примените MD5 сто или тысячу раз, это не сильно изменит ситуацию. На сегодняшний день рекомендуется использовать SHA-2 или SHA-3.

    P. S. Соль и токены обязательно должны быть сгенерированы с помощью CSPRNG.
    Ответ написан
  • Как в Debian запустить "setup"?

    @Tabletko
    никого не трогаю, починяю примус
    tasksel - и там выбираете нужные компоненты. Остальное доустанивить через apt
    Ответ написан
    1 комментарий
  • Можно ли перенести сайт с сохранением данных с Битрикс на фреймворк?

    "из-за ограниченного бюджета" сразу откажитесь от использования 1C:Битрикс
    Ответ написан
    Комментировать
  • Где посмотреть, какие операции можно применить к определенному типу данных в C++?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Это legacy наследние, которое сейчас считается устаревшим.
    Когда трава была зеленее, а С++ еще слишком молод, в чистом С вообще не было boolean, поэтому использовался int, который использовался в качестве flag переменных.
    При этом 0+1 = true, 1+1 = true, 2+1 = true (все верно)
    Но при этом 1-0=false (верно), однако 2-1=true, 3-1=true.

    Поэтому никогда никто не использовал декремент для подобных значений - иначе это могло привести к ошибке. Собственно инкремент тоже теоретически мог однажды переполниться...

    Когда появился boolean, то для совместимости сохранили возможность инкремента boolean, но с самого начала это считалось deprecated.

    The value obtained by applying a postfix ++ is the value that the operand had before applying the operator. [Note: the value obtained is a copy of the original value ] The operand shall be a modifiable lvalue. The type of the operand shall be an arithmetic type or a pointer to a complete object type. After the result is noted, the value of the object is modified by adding 1 to it, unless the object is of type bool, in which case it is set to true. [Note: this use is deprecated, see annex D. ]


    Кстати это в 2015 году уже официально отменили:
    www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p...
    "The ++ operator for bool was deprecated in the original 1998 C++ standard, and it is past time to formally remove it.
    Ответ написан
    Комментировать
  • Планирую в новую квартиру проводить интернет 100 Мбит/с, хочу чтобы все было без проводов, хватит ли мне скорости на 2 телевизора и 1 комп +телефон?

    Jump
    @Jump
    Системный администратор со стажем.
    Насколько будет все стабильно через Wi-fi?
    Стабильность и WiFi вещь не совместимая.
    Нужна стабильность -только провода.

    Ну и скорость низкая.
    FullHD может потянет - но если повезет, не повезет, значит не потянет. В любом случае зависит не от вас, а от соседей.
    А скажем с файловой шарой работать вообще невозможно - качать файл со своей шары будете в лучшем случае со скоростью 4-5Мб/с, ну это несерьезно.
    Ответ написан
    Комментировать
  • Авторизация на PHP?

    sayber
    @sayber Куратор тега PHP
    Да, я программирую на PHP и еще асинхронно!
    Я бы на вашем месте, начал с понимания интернета и изучения поиска информации в нем.
    банально: заголовок вашего вопроса и поиск на данном ресурсе.

    А уже затем изучать программирование и т.п.
    Ответ написан
    2 комментария
  • В каких бесплатных IDE работают PHP разработчики?

    sabramovskikh
    @sabramovskikh
    Окей, гугл, Гугл ты тупой? Я хочу чтобы люди ответили именно на мой вопрос. Мой вопрос уникальный, а не такой-же как 336 тысяч других вопросов.
    Ответ написан
    1 комментарий
  • Для чего существуют другие парадигмы программирования?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Любую программу можно написать с любым подходом. Разница лишь в том, насколько удобно будет моделировать законы реального мира в программе. ООП потому распространено, что провести аналогию между программным обьектом и обьектом из реального мира очень легко. При программировании предметных областей которые не имеют осязаямых участников, могут быть удобны другие парадигмы. По той же причине когда нужно в ООП отображать неосязаемые сущности, могут возникать определенные сложности с именованием классов. Может замечали. Не все рифмуется в эту парадигму. Иногда вам нужны просто вычисления, тогда декомпозиция задачи на объекты не нужна совсем.
    Парадигма это всего лишь перспектива взгляда на одно и то же. В зависимости от того с какой стороны мы смотрим на предмет, очередность (приоритет) компонент его составляющих для зрителя будет меняться. В какой-то задаче может быть важно время, а в какой-то цвет, а в какой-то измерение. Что является единицей анализа в честь того и парадигма.
    Ответ написан
    Комментировать
  • Как не умудрённому клиенту выбрать честного и эффективного SEO-оптимизатора для своего сайта? Есть ли чек-лист по выбору сеошника?

    Jump
    @Jump
    Системный администратор со стажем.
    А вы уверены что вам вообще нужна SEO-оптимизация, и четко представляете что это такое?
    Рассмотрим комплексно - есть стоматология, ей нужны клиенты.
    Тут следует понимать что такое стоматология и специфику работы - все услуги оказываются на территории исполнителя, клиенты исключительно местные.
    Вы же не будете ставить пломбы дистанционно по RDP? И клиент не поедет в стоматологию в соседний город, или даже в соседний район крупного города. В большинстве случаев клиенты стоматологии это клиенты живущие поблизости, либо регулярно бывающие в районе ее размещения.
    Возможны исключения - если вы оказываете какие-то очень специфические услуги, которые просто не найти у других, или у вас есть уникальное оборудование единственное в стране или регионе.

    А SEO это просто привлечение народа на ваш сайт, там конечно можно таргетировать по географии, но это довольно неточно, и надеяться на это не стоит.
    Ну выйдете вы в первые строчки поиска вбухав кучу денег, что вам это даст? Клиенты все равно будут выбирать что поближе.

    В таком бизнесе сайт как правило это просто визитка, т.е информация, ну и возможность связи, и записи на прием.
    Надеятся на приток клиент исключительно с сайта бессмысленно.
    Нужна реклама, нацеленная на нужную аудиторию - и сайт в принципе можно использовать в рекламе для некоторых целей. Но сам по себе сайт не даст вам клиентов.
    Реклама может дать клиентов, клиенты возможно сразу поедут к вам, а может сначала зайдут на сайт, по ссылке из рекламы.

    Гораздо эффективнее найти хорошего рекламщика, который разместит информацию о вашей стоматологии во всех справочниках - в яндексе, в 2gis, повесит баннер на оживленной трассе, рядом с офисом, и.т.п.

    Хороший сеошник за хорошие деньги сделает ваш сайт популярным и выведет в первые строки поиска, но клиентов это вам не добавит. Поэтому даже если вы найдете хорошего сеошника, вы все равно потратите деньги зря.
    Ответ написан
    2 комментария
  • JSON тип данные в MySQL, в чем минус?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    По большому счету это денормализация базы.
    Денормализацию стоит применять когда Вы 100% понимаете что делаете, получая в каких-то конкретных условиях ускорение каких-то конкретных запросов, взамен теряя в гибкости при дальнейшей разработке и в производительности во всех остальных местах.

    Попробую расписать на Вашем примере (хранить категории поста в свойстве поста в json) чтобы было понятней:

    Тут все отлично пока Вам просто нужно выводить категории у поста.

    Как только нужно искать по категории - начинаются проблемы, какой нибудь JSON_CONTAINS - будет дико медленным на нормальном объеме данных (ведь ему нужно выполниться для каждой строки таблицы, а индексов то и нет).

    Решение - заводить еще одну денормализованное свойство для категорий - в котором хранить id постов.
    Но дальше всплывают новые задачи которые в нормализованной базе решаются за 5 секунд, а в денормализованной - нужно опять же кодить:
    - поиск по нескольким категориям сразу
    - расчет количества постов у категорий
    - итд итп.

    К чему это я все?
    К тому что используйте 3 НФ, и только когда упретесь в реальную производительность базы - начинайте думать про денормализацию.
    Ответ написан
    Комментировать
  • Что делать с кодировкой?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Content-Encoding: gzip

    Распаковать данные забыли
    https://stackoverflow.com/a/24949005
    Ответ написан
    Комментировать
  • Как быстро можно вникнуть в популярные CMS?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Многие ЦМС у себя реализуют паттерн MVC, но в усложненно-испорченных вариантах со своими особенностями.

    Чтобы быстро разобраться что и как — нужно бы изучить ООП и MVC в частности, и с этим базовым знанием уже разобраться, как он реализован в том или ином движке — тогда разбор идет как по маслу.

    Но если есть глобальная цель — изучить программирование, то стоит после изучения — изучать фреймворки
    Ответ написан
    1 комментарий
  • Как быстро можно вникнуть в популярные CMS?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Чтобы быстро вникнуть надо нормально знать php.*
    И тогда можно использовать что угодно.

    * кроме битрикса, туда вникнуть нельзя никак даже теоретически, там полная каша.
    Ответ написан
    1 комментарий
  • Сбор сетевой статистики с пользовательских ПК?

    @cssman
    советы по сетевому администрированию больших групп ПК

    это AD или управление конфигурациями (chef, puppet, ansible)

    все данные.

    какие данные?
    если нужна доступность - то это snmp, если логи какие то, то например syslog.

    ПО которое будет стоять у меня в офисе

    а это уже бэкэнд (но забирать то информацию нужно чем то, см. выше). тут тоже есть разные штуки для разных целей. для snmp - zabbix, prtg, nagios. для логов - siem'ы, splunk и аналоги

    P.S: В гугле и сам поискать могу :)

    но не поискали.

    правильно заданный вопрос - половина ответа.
    Ответ написан
    1 комментарий
  • Как сделать AJAX запрос безопасным?

    @dady_KK
    PM
    CSRF - почитайте про это, именно этот тип атак Вы описали в вопросе, для защиты используют обычно уникальные токены, которые рандомно меняются при каждом посещении (каждом просмотре страницы) и проверяются бекендом (совпал токен или нет). Таким образом чтобы запрос был успешно обработан в форме должен быть правильный токен для этого конкретного посещения
    Ответ написан
    4 комментария
  • В связи с чем флешки ведут себя очень странно?

    @neol
    Также появилась проблема, похожая на печально известный баг #12309 - при передачи файлов на флешку начинает дичайше тормозить компьютер, курсор перемещается отрывисто, и т.п.
    Вот, например, сегодня, совершив 3-4 попытки, файлы все таки удалились. Начал скидывать на флешку файл в 1.5 гига, начал тормозить компьютер, в итоге все скинулось.

    Есть еще несколько странностей при передаче данных. Скидывая, к примеру, 5 файлов в 575 МБ, прогресс в статус-баре быстро доходит до 570 МБ, зависает на некоторое время, отвисает, затем опять быстро доходит до 1140 МБ (как будто, загрузив уже два файла), зависает, и т.д.

    Это долбанутость системы ввода/вывода Linux. Когда программа пишет какие-либо данные на диск, на самом деле они пишутся в память, а непосредственная запись происходит при достижении этим буфером размера, заданного параметром sysctl vm.dirty_ratio, который задаётся в процентах от объёма доступной ( MemFree + Cached) оперативной памяти(на самом деле может быть раньше, но об этом ниже). На современных системах порой получается дохрена (в вашем случае ≈ 570 Мб) и в момент записи устройство начинает офигивать от внезапно свалившегося потока данных на запись ( сколько там скорость записи у вашей флешки? 15-30 Мб/с в лучшем случае? ), а вообще все процессы, использующие какой-либо диск, наглухо блокируются до освобождения буфера. Если таких процессов много, то все ядра процессора повисают в iowait и система начинает заметно лагать.

    Чтобы как-то жить с этой фигнёй, надо настроить размеры буферов таким образом, чтобы процесс сброса не вызывал блокировку на длительное время. Например:
    sysctl vm.dirty_bytes=10485760
    sysctl vm.dirty_background_bytes=2621440

    vm.dirty_bytes - аналогично vm.dirty_ratio, но в байтах, а не процентах от сферического коня в вакууме. Если задано vm.dirty_bytes, то vm.dirty_ratio обнуляется и не учитывается.

    vm.dirty_background_bytes - тоже самое, но для фонового процесса сброса данных (pdflush), который периодически просыпается и смотрит, не надо ли скинуть что-то на диск ( он может начать сброс раньше, чем заполнится буфер, а может и не начать, если не успеет проснуться (= ).

    Это слишком низкие значения, но вашу проблему должны решить полностью. Поиграйте с циферками, чтобы подобрать значения, при которых данные не будут писаться слишком часто и система не будет подвисать при копировании на медленные устройства. Сохранить их между перезагрузками можно через /etc/sysctl.conf.

    Затем, извлек и вставил обратно флешку, и она перестала читаться, ссылается на Input/Output error.

    Если флешка с индикатором записи, то не вытаскивайте ей пока он мигает, даже если ваш файловый менеджер говорит, что уже можно (он, скотина, врёт!). Если индикатора нет, то просто пойдите заварить себе чайку после нажатия кнопки отмонтировать/извлечь или как там её.

    PS Указанные параметры достаточно подробно описаны в документации

    PPS мог что-то напутать в деталях, так как время уже позднее, но параметры точно те.
    Ответ написан
    Комментировать
  • Как стать IOS разработчиком без продуктов Apple?

    GavriKos
    @GavriKos
    Никак.
    Ответ написан
    Комментировать
  • Сравнение дат в Mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SELECT * 
      FROM `table` AS `t1`
      JOIN `table` AS `t2` ON `t1`.`user_id` < `t2`.`user_id` 
        AND `t1`.`date_start` <= `t2`.`date_end` AND `t2`.`date_start` <= `t1`.`date_end`
    Ответ написан
    1 комментарий