• Где посмотреть, какие операции можно применить к определенному типу данных в 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 комментария
  • Описание класса в .cpp?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Такс, давай отойдем немного назад, ведь у тебя явно ощущаются пробелы в знаниях.

    Сам класс в .h, а его описание в .cpp.

    Чтобы тебя правильно понимали, сперва нужно понять общую терминологию, а далее - этой терминологией нужно корректно пользоваться.
    У нас есть два строгих термина: Declaration (объявление) и Definition (определение).
    Замечу одну важную вещь - для определения характерно ODR (правило однократного определения), но пока на это можно не отвлекаться, потом надо будет.

    А потом к основному main.cpp подключаю просто файл .h

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

    Компилятору известно только понятие Translation Unit. Он ничего не понимает во всех этих .h/.inl/.inc/.c/.cpp/...
    Для правильной сборки кода ты должен рассказать компилятору о том, как из всей понятной только тебе бурды собрать вожделенный для него модуль трансляции, в котором будет весь исчерпывающий код для завершения компиляции.

    Тебе незачем лепить файлы только ради объявлений и определений. Все равно для компилятора это будет собрано в один файл. А такие системы сборки, как FastBuild или IncrediBuild и вовсе весть проект вгоняют в один файл и только потом кормят этим файлом компилятор.

    Получается какой-то костыль.

    И это ошибочный вывод. Вот теперь давай разбираться в ODR.
    One Definition Rule гарантирует нам детерминизм любого используемого в коде типа, любой функции, любой переменной в рамках одной области видимости (но не в разных).
    Это правило позволяет сказать, что свойства программы однозначно определены до процесса трансляции и не изменяются после него.

    Любой мелкий проект ты всегда можешь написать в одном файле на 2 килостроки. Это не страшно.
    Когда у тебя более-менее большой проект, один файл у тебя уже не получится.
    Появляется необходимость заниматься архитектурой кода: выводить сущности, связывать их, получать зависимости. Помимо архитектуры кода, появляется необходимость наладить грамотное разделение кода на файлы. А файлы нужно грамотно компоновать вместе. Появляется необходимость в макроархитектуре проекта.
    Тут на помощь и приходят устоявшиеся правила разделения кода по типам файлов.

    В таких условиях очень важно соблюдать ODR и крайне важно понимать смысл таких ключевых слов, как static и inline.
    А помимо ODR тут еще встает вопрос избыточной компиляции кода - когда ненужные объявления все равно включаются в исходный код и впустую тратят процессорное время на свою трансляцию. В этом случае становится важно не включать лишние объявления или ненужные определения в заголовочные файлы.

    И именно поэтому, если определение сущности можно выделить в отдельный модуль трансляции, то это лучше сделать. Если тип явным образом не используется в других модулях проекта, его лучше загнать в файл исходного кода. Если функция не предназначена для встраивания, ее лучше загнать в файл исходного кода. Если есть частная специализация шаблона, которая используется только в одном файле исходного кода, то лучше там ее и определить.
    В этом случае процесс сборки твоего большого проекта будет легким и быстрым.
    Ответ написан
    Комментировать
  • В каких бесплатных 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 комментарий
  • Как в примере сложения двух чисел (банального 1 + 1) на физическом уровне работает процессор?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Учить и понимать по-порядку:
    1. Транзисторы и их применение - советский научно-познавательный фильм
    Хороший обучающий ролик ещё времён СССР про работу транзисторов на русском: здесь
    2. Двоичная система счисления
    3. Битовые операции
    4. Диодно-транзисторная логика

    Наглядно:
    Как-то так )
    ios_640_1136_med.png

    Это реализация реплики на Unity вот с этого механического (видео):
    5811602758_93de01bca7_b.jpg
    Ответ написан
    2 комментария
  • Как в примере сложения двух чисел (банального 1 + 1) на физическом уровне работает процессор?

    HalfBloodPrince
    @HalfBloodPrince
    Front-End Developer
    Я не думаю, что возможно тут в двух словах что-то написать. Если интересует тема подробно, то есть хорошая книга "Код: Тайный язык информатики" Charles Petzold. Почитайте её.
    Ответ написан
    Комментировать
  • Laravel vs Yii vs Symfony для проект требовательного к скорости?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Писать хороший код надо для проекта требовательного к скорости.

    Разница в скорости пустого фреймворка из коробки станет несущественной как только вы напишите первые строки своего кода с бизнес логикой.
    Ответ написан
    2 комментария
  • Linux или Windows для C++ разработчика?

    @Trotilla
    В наш век С++ без кроссплатформенности ни для кого не нужен.
    За очень и очень редкими исключениями.
    Ответ написан
    Комментировать