• Почему не создается таблица в MySQL с AUTO_INCREMENT?

    Melkij
    @Melkij
    PostgreSQL DBA
    В книге идентичный пример работает почему-то

    Фокусы руками, найдите различие:
    mysql> CREATE TABLE album ( artist_id SMALLINT(5) NOT NULL, album_id SMALLINT(4) NOT NULL AUTO_INCREMENT, album_name CHAR(128) DEFAULT NULL, PRIMARY KEY (artist_id, album_id) ) engine=innodb;
    ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
    mysql> CREATE TABLE album ( artist_id SMALLINT(5) NOT NULL, album_id SMALLINT(4) NOT NULL AUTO_INCREMENT, album_name CHAR(128) DEFAULT NULL, PRIMARY KEY (artist_id, album_id) ) engine=myisam;
    Query OK, 0 rows affected (0,00 sec)
    
    mysql>

    У вас с книгой разные дефолтные движки, в будущем от этого могут ещё сюрпризы возникать. Очень разные myisam и innodb по поведению, возможностям и ограничениям.
    Ответ написан
    1 комментарий
  • Как лучше парсить messages?

    dummyman
    @dummyman
    диссидент-схизматик
    За парсинг текстовых файлов в linux отвечает awk
    Есть хорошая книга.
    Ответ написан
    Комментировать
  • Как лучше парсить messages?

    p00h
    @p00h
    Фехтовальщик-стропальщик
    Задача совершенно не ясна.
    Чтобы вывести информацию из /var/log/messages достаточно сделать:
    cat /var/log/messages
    Уточните задачу.
    Ответ написан
    1 комментарий
  • Как в node правильно хранить промежуточные данные?

    dummyman
    @dummyman
    диссидент-схизматик
    под данные о текущих боях (расположение кораблей, ходы) сделал просто глобальный объект с массивами

    Я бы так не делал. Во первых, по хорошему, на каждый бой должен запускаться отдельный процесс. Чтобы процесс боя падая не убивал с собой весь стек сервисов. Хранить данные можно в памяти, можно файлом на разделе tmpfs.
    Не забывайте, важно не допускать race conditions.
    Если у вас используется express/connect, сведите к минимуму обращения middleware к глобальным объектам, и ни в коем случае не сохраняйте ничего в глобальных из middleware. Есть объекты для общих данных, например, app.locals, res.locals; есть много реализаций сессий.

    Позже заметил
    matrix[i] = Array('','','','','','','','','','');
    наверное, правильнее так
    matrix[i] = ['','','','','','','','','',''];

    Да и еще один тонкий момент. Здесь по коду у вас этого нет, но про это вам никто не скажет. Но вы обязательно посчитаете должным так делать. Во избежание утечек не изменяйте структуру объектов после их создания. Вся структура, прототип, все параметры объектов должны определяться до создания и в конструкторе.
    Ответ написан
    Комментировать
  • Возможно ли перезаписать свойства класса?

    @entermix
    Ну возьмите все стили, которые задает class1 и отключите их в class3, в чем проблема?

    .class1 {
        background: #00c300;
    }
    .class3 {
        background: none;
    }


    Можно конечно и так, но хочется на css.
    <script>$(".class1").removeClass("class3")</script>

    Спрашиваете одно, делаете второе, хотите десятое, наверное?
    Ответ написан
    2 комментария
  • Как в Windows запустить предоставить доступ на запуск лишь одной программы с повышенными привилегиями?

    @spyk3r
    как костыль: runas /savecred и сделать ярлык(cmd) для запуска приложения (один раз запросит пароль, сохранит его в хранилище и не будет больше запрашивать).
    НО! пользователь сможет (если догадается) запускать любые программы через runas с этой сохраненной учеткой
    Ответ написан
    Комментировать
  • Ajax. Как получить массив из обработчика?

    @entermix
    Обработчик на стороне сервера может возвращать только строку, но Вы можете использовать json_encode, чтобы конвертировать PHP массив в JSON-представление, а затем обработать его на стороне JS

    die(json_encode($array));
    Ответ написан
    Комментировать
  • Ajax. Как получить массив из обработчика?

    Ahen
    @Ahen
    Универсальный дилетант
    Как же сложно изъясняетесь.

    Получает тело документа.
    Как я понимаю js получает от обработчика то, что выводится в echo или print_r.


    Вы спрашиваете, как отдать php обработчиком json data?
    Можно ли вернуть массив, что то по типу return?


    Допустим мы имеем массив
    $arr = [
    "name" => "vasya", 
    "age" => "23"
    ];


    Используя функцию json_encode выводим этот массив в виде json.
    echo json_encode($arr);

    P.S. Если я так и не понял вопроса, то оставьте комментарий с разъяснениями.
    Ответ написан
    2 комментария
  • Как перезагрузить страницу после успешного выполнения ajax запроса?

    GM_pAnda
    @GM_pAnda
    Бездельник
    $.ajax({
    			type: "POST",
    			async: true,
    			url: UriRequest,
    			cache: false,
    			data: dataForm,
    			success: function(data){
    				try {
    					//
    				}
    				catch (e) {
    					console.error('Invalid JSON');
    				}
    			},
    			complete: function() {
    			 // делаем редерект window.location.href = '/page2';
    
    			}
    		});
    Ответ написан
    Комментировать
  • Стоит ли сейчас покупать ноутбук?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    ты несешь его из магазина, а он уже устарел (с)

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

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

    Если бы это был логин попап, то контент на фоне я б сразу не рендерил. Есть куча умников умеющих в девтулс удалить попап и смотреть контент. Если контент подгружается джаваскриптом, то загружаете в фоне сохраняете в переменную, но не рендерите пока пользователь не кликнет на кнопку в попапе.

    Оно не должно мешать загрузке остальной страницы и ее скриптов.

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

    Другое дело джаваскрипт. Его загрузка и выполнение блокируют обработку и рендеринг страницы. Потому рекомендуется объявление джаваскрипта размещать или в самом низу страницы - начнет загрузку скрипта после загрузки страницы. Но кажется это не всегда гарантирует хороший результат.

    Лучше добавить в теги скрипт атрибуты async или defer. Первый не блокирует рендеринг страницы, но начинает свое исполнение сразу как только загружен. Это потенциально может привести к проблемам. Например попап еще не отрендерен, а скрипт уже начал выполнение и не нашел в разметке попапа, не смог повесить обработчики событий и все нерабочий попап получится. Из-за этого же этот атрибут не гарантирует, что скрипты будут выполнятся в том порядке в котором объявлены. Опять же одни скрипты могут зависить от других и это может привести к неработающему функционалу.

    Дефер же гарантирует, что исполнение скрипта начнется только после полной загрузки страницы и что скрипты будут исполнятся в порядке их объявления. Потому он самый предпочтительный.

    Вообще есть бесплатный курс по оптимизации загрузки страницы от гугла. https://www.udacity.com/course/website-performance...

    Кажется я в итоге не на ваш вопрос ответил.
    Ответ написан
    1 комментарий
  • Как ускорить работу парсера?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Или как sim3x советует, или есть еще вариант - не лить в базу, а фигачить все как есть в файлы, а на локале уже парсить. Уходит проблема с бд, ну, временно, разобраться что за косяки с бд все равно предстоит, но данные уже будут расположены локально, их можно и чем-то побыстрее пыха запарсить. И например в цсв сохранить, а потом тупо залить в базу.
    Ответ написан
    Комментировать
  • Где хостятся видео-сервисы?

    opium
    @opium
    Просто люблю качественно работать
    а что там организовывать
    просто сервер с nginx и фтп для заливки
    настройка минимальная по большей части
    Ответ написан
    Комментировать
  • Вопрос чисто к опытным верстальщикам?

    @AntowaKartowa
    Дк вроде уже ни в одной статье писалось, что цепочки селекторов это зло. Не столько с эстетической сколько с практической точки зрения.

    1. Если тебе где-то нужно переопределить стили в каком-то отдельном контексте придеться такую же длинную цепочку фигачить.
    2. Ну и размер файла стилей это не уменьшает.
    3. Плюс дополнительные элементы цепочки это лишние циклы поиска браузером соответствии элементов в ДОМ структуре, что ест ресурс. Одна цепочка может не заметна, но полчища таких цепочек уверен могут показать существенную разницу.
    4. Потом браузер ведь читает справа налево. В .navbar .navbar-right-menu li.notify-dropdown .notify-list li a .notify-body он сначало найдет все .notify-body, потом начнет проверять какие из них вложены в тег a и искать будет до самого верхнего эелемента пока не найдет или не упреться в бади. Потом начент проверять а какие из них лежат внутри списка li и тд. Куча ненужных обработок.
    5. В этом же ключе стоит упомянуть, что селекторы в идеале все должны быть классами. А селекторы теги типа a, li, p, span и тд нужно избегать потому что они неспецифичны, не несут большой ценности, создают лишние цыклы обхода дерева элементов. По той же причине нельзя использовать селектор *.

    В идеале вообще не должно быть вложенных селекторов. Почитай про БЕМ методологию. https://ru.bem.info/methodology/ Максимум 2 в крайних случаях три уровня вложенности.
    Ответ написан
    Комментировать
  • Как наиболее красиво подключать библиотеки при сборке проекта на Angular 4.0?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Мужик в Одессе останавливает тачку.
    - Шеф, мне в ресторан на Дерибасовской!
    - Садись.
    Проезжают 10 метров, водила тормозит, распахивает дверцу:
    - "Прошу, Дерибасовская!"
    Мужик в недоумении: - Так что-ж ты сразу не сказал?!
    Водила: - А я думал Вы с шиком хотите...
    Ответ написан
    5 комментариев
  • Как формировать ленту подписок?

    Stalker_RED
    @Stalker_RED
    Что мешает вместо того, чтоб проверять "нет ли чего нового" отправлять уведомление подписчикам в момент публикации?
    Ответ написан
    3 комментария
  • Как в Sublime Text 3 при поиске во всех файлах сразу же их и редактировать?

    atomheart
    @atomheart
    Пишу на Python за карму и за деньги
    F4 открывает по очереди файлы, в которых было найдено искомое выражение.
    В меню это пункут: Find -> Find Results -> Next Result
    Ответ написан
    Комментировать
  • Является ли код асинхронным?

    @VladVol Автор вопроса
    Чтение файла же занимает какое-то время, нет? Значит, вот этот пример с рандомной задержкой корректнее
    function fn(id){
       return new Promise((resolve, reject) => {
          setTimeout(() => {
    	  	console.log(id);
    		resolve(id);
    	  }, Math.random() * 1000);
       });
    }
    
    for(let i = 0; i < 100; i++){
       fn(i);
    }

    Так асинхронно.
    Ответ написан
    1 комментарий