LINUX.ORG.RU

Сообщения Razip

 

Ищу удаленную работу веб-программистом на PHP/Yii 2

Навыки:

  • PHP (5/7)
  • JavaScript/jQuery
  • HTML/CSS
  • MySQL/SQL
  • Git
  • Английский (C1)

Не верстаю.

Тестовый проект на Yii 2

Тестовый проект на JavaScript

Писать на work.razip собака yandex.com

 ,

Razip
()

Ищу удаленную работу веб-программистом за еду

Привет.

Что умею сейчас: PHP (есть небольшой опыт с Symphony2), JavaScript (работал с jQuery), MySQL/SQL, HTML/CSS (но не верстаю), немного умею в Git, довольно неплохо знаю английский.

Хочу получить опыт работы с мейнстримными PHP/JS-фреймворками и CMS в продакшене.

Писать тут или на:

work.razip гав-гав yandex.com

 , ,

Razip
()

Сохранить-загрузить состояние HTML5 canvas

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <style>
        .border {
            border: 1px solid black;
        }
    </style>
</head>
<body>
<canvas id="canvas" class="border" width="300px" height="200px"></canvas>
<script>
//    function getMousePos(canvas, evt) {
//        var rect = canvas.getBoundingClientRect();
//        return {
//            x: evt.clientX - rect.left,
//            y: evt.clientY - rect.top
//        };
//    }

    //    var c = document.getElementById("canvas");
    //    var ctx = c.getContext("2d");
    //    ctx.beginPath();
    //    ctx.moveTo(20, 20);
    //    ctx.bezierCurveTo(-40, 110, 110, 110, 50, 20);
    //    ctx.stroke();

    var canvas = document.getElementById('canvas');

    var context = canvas.getContext('2d');

    //    var drawingFlag = false;
    //
    //    var startPoint = null;

    var image = new Image();

    image.src = canvas.toDataURL();

    context.beginPath();
    context.moveTo(20, 20);

    context.lineTo(50, 50);
    context.stroke();

    context.drawImage(image, 0, 0);

    //    canvas.onmousemove = function (event) {
    //        if (drawingFlag) {
    //            context.restore();
    //
    //            var endPoint = getMousePos(canvas, event);
    //
    //            context.beginPath();
    //            context.moveTo(startPoint.x, startPoint.y);
    //            context.lineTo(endPoint.x, endPoint.y);
    //            context.stroke();
    //        }
    //    };
    //
    //    canvas.onmousedown = function (event) {
    //        context.save();
    //
    //        console.log('saved');
    //
    //        drawingFlag = true;
    //
    //        startPoint = getMousePos(canvas, event);
    //    };

    //    canvas.onmouseup = function() {
    //        drawingFlag = false;
    //
    //        startPoint = null;
    //    };
</script>
</body>
</html>

Привет. Хочу сохранить пустой холст, нарисовать что-то и откатиться до сохраненного варианта. Картинка успешно сохраняется (через console.log() смотрел), только вот с загрузкой проблема - по идеи, после загрузки должен быть пустой холст, но нет - нарисованная линия остается нетронутой. Никаких ошибок в консоле нет. В чем может быть дело? Спасибо!

 ,

Razip
()

MySQL. выполнить UPDATE из IF()

CREATE EVENT `resource_167` ON SCHEDULE EVERY 1 SECOND DO BEGIN
UPDATE `towns2`
SET
`wood` = IF(`wood` + 250 / 3600 > 800, 800, `wood` + 250 / 3600),
`clay` = IF(`clay` + 100 / 3600 > 800, 800, `clay` + 100 / 3600), 
`iron` = IF(`iron` + 150 / 3600 > 800, 800, `iron` + 150 / 3600), 
`crop` = IF(`crop` + 200 / 3600 > 800, 800, `crop` + 200 / 3600), 
`Food` = IF(`Food` + (100 / 3600 - 150 / 3600) > 1000,
/* then */ 1000,
/* else */
IF(`Food` + (100 / 3600 - 150 / 3600) < 0, 0 /* желательно бы отсюда выполнить UPDATE, но чтобы IF все так же возвращал 0 */, `Food` + (100 / 3600 - 150 / 3600)) )
WHERE `wref` = 167; END

Сабж. Как? Заранее спасибо.

 ,

Razip
()

Помогите с таймерами

Приветствую. Выручайте, уже сломал голову. Суть задачи в том, что я пишу таймеры обратного отсчета, которые стартуют в определенный startTimestamp и останавливаются в определенный endTimestamp. Между началом и остановкой есть JS-интервал, который занимается выводом оставшегося времени до endTimestamp. Проблема в том, что иногда вывод неправильный, выводится вот что:

0 start 1482323367 index.html:52:13
0 input 13 index.html:57:1
0 input 12 index.html:57:1
0 input 11 index.html:57:1
0 input 10 index.html:57:1
0 input 9 index.html:57:1
0 input 8 index.html:57:1
0 input 7 index.html:57:1
0 input 6 index.html:57:1
0 input 5 index.html:57:1
0 input 4 index.html:57:1
0 input 3 index.html:57:1
0 input 2 index.html:57:1
0 input 1 index.html:57:1
1 start 1482323379 index.html:52:13
1 input 16 index.html:57:1
0 end 1482323379 index.html:81:17
1 input 14 index.html:57:1
1 input 13 index.html:57:1
1 input 12 index.html:57:1
1 input 11 index.html:57:1
1 input 10 index.html:57:1
1 input 9 index.html:57:1
1 input 8 index.html:57:1
1 input 7 index.html:57:1
1 input 6 index.html:57:1
1 input 5 index.html:57:1
1 input 4 index.html:57:1
1 input 3 index.html:57:1
1 input 2 index.html:57:1
1 input 1 index.html:57:1
2 start 1482323394 index.html:52:13
2 input 16 index.html:57:1
1 input 0 index.html:57:1
2 input 14 index.html:57:1
1 end 1482323396 index.html:81:17
2 input 13 index.html:57:1
2 input 12 index.html:57:1
2 input 11 index.html:57:1
2 input 10 index.html:57:1
2 input 9 index.html:57:1
2 input 8 index.html:57:1
2 input 7 index.html:57:1
2 input 6 index.html:57:1
2 input 5 index.html:57:1
2 input 4 index.html:57:1
2 input 3 index.html:57:1
2 input 2 index.html:57:1
2 input 1 index.html:57:1
2 input 0 index.html:57:1
2 end 1482323411
Иными словами, когда исчезает первый таймер, то второй начинает обратный отсчет с 16 вместо 15, а потом перескакивает сразу на 14, а должно быть - 15 -> 14 -> 13 и т.д. Самое интересное, что проблема то исчезает, то появляется, как-будто это вызвано какими-то задержками при выполнении кода.

Заранее благодарю всех отписавшихся.

upd: лол, сейчас архив с кодом скину

 

Razip
()

JavaScript. onkeydown, oninput

Привет ЛОР.

var game = new Game();

var eventAllowed = true;

inputField.onkeydown = function (event) {
    if (event.keyCode === 8) { // 8 значит BackSpace, если кто не в курсе
        game.deleteChar(inputField.value.length - 1);

        eventAllowed = false;
    }
};

inputField.oninput = function () {
    eventAllowed && game.addChar(inputField.value.substr(-1));

    eventAllowed = true;
};

Суть моей проблемы в том, что при _удерживании_ BackSpace не генерируется событие oninput, а значит и eventAllowed некому поставить в положение true.

На данный момент есть костыль:

inputField.onkeyup = function () {
    eventAllowed = true;
};

Есть ли возможность из onkeydown вообще не ставить eventAllowed в false когда идет удерживание? Спасибо.

 

Razip
()

Помогите найти игру

Привет ЛОР.

Игра про мафию, графика примерно на уровне 90х, 2D и/или изометрия. В игре можно красть людей, выслеживать что-то (?). Передвигается персонаж по карте либо пешком, либо на машине если не ошибаюсь. Можно нанимать бандитов. Бой пошаговый.

Я понимаю что информации мало, но может у кого-то будут какие-нибудь предположения. Спасибо.

 ,

Razip
()

Выборка. SQL

SELECT `user`.`name`, `text_record`.`date`, MAX(`text_record`.`value`) AS `record` FROM `text_record` JOIN `user` ON `user`.`id` = `text_record`.`user_id` WHERE `text_record`.`user_id` = 1 AND `text_record`.`text_id` = 12 LIMIT 10
+-------+------+----------------------------+
| name  | date | MAX(`text_record`.`value`) |
+-------+------+----------------------------+
| Razip | NULL |                       NULL |
+-------+------+----------------------------+

Как изменить запрос таким образом, чтобы если нужной записи в таблице text_record не существует, то не делался JOIN вообще? Спасибо.

 ,

Razip
()

Установка Skype на Gentoo

Привет. Сталкиваюсь с этим https://bpaste.net/show/9e4e7098e32d Как можно решить проблему?

P.S. дабы не создавать лишнюю тему спрошу тут: как сохранить уровень громкости чтобы он не сбивался при перезагрузке? Когда я ставил ALSA, там в одном WARNING'е была написана команда добавления какого-то сервиса (rc-update add <service> default), а вот какого - не помню.

И вообще есть ли возможность через emerge глянуть эти WARNING для всех пакетов?

 ,

Razip
()

systemd, Gentoo и куча ошибок

Приветствую.

systemd при загрузке переходит в режим восстановления (или что-то подобное) и предлагает почитать журнал. Лог этого журнала лежит тут.

Красным цветом выделены следующие строки (тут не все):

май 03 21:28:11 localhost kernel: EXT3-fs (sdb3): error: couldn't mount because of unsupported optional features (240)
май 03 21:28:11 localhost kernel: EXT2-fs (sdb3): error: couldn't mount because of unsupported optional features (240)
май 03 21:28:11 localhost systemd[1]: Failed to insert module 'autofs4'
май 03 21:28:11 localhost systemd[1]: Failed to insert module 'ipv6'
май 03 21:28:11 localhost systemd[1]: Failed to open /dev/autofs: No such file or directory
май 03 21:28:11 localhost systemd[1]: Failed to initialize automounter: No such file or directory
май 03 21:28:11 localhost systemd[1]: Failed to set up automount Arbitrary Executable File Formats File System Automount Point.

В чем может быть проблема? Спасибо.

 ,

Razip
()

Не могу записать звук с микрофона

Приветствую. Собственно сабж. PulseAudio. «Куда копать»?

 

Razip
()

Не запускается Cinnamon

Приветствую. При загрузке запускаю lightdm, ввожу логин и пароль, и вижу ошибку:

Failed to load session "cinnamon"
Есть идеи как решить проблему? Спасибо.

 ,

Razip
()

X не стартует

https://bpaste.net/show/cf5c7a04016f

В чем может быть дело? Спасибо.

 ,

Razip
()

Gentoo не отображается в Grub2

Приветствую. При загрузке компьютера Grub2 выводит консоль и нет возможности загрузится в систему. Загрузчик настраивал следующим образом по HandBook:

grub2-install /dev/sdb
grub2-mkconfig -o /boot/grub/grub.cfg

Конфигурация grub.cfg - https://bpaste.net/show/5413013b81f1.

В чем может быть проблема?

 ,

Razip
()

Поделитесь сохранением This War of Mine

Приветствую.

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

Моя последняя надежда - попробовать оконный режим, который, зараза, ставиться только через настройки. =( А их файл закодирован.

Если кто-нибудь поделится со мной сохранением с оконным режимом, то буду очень признателен! (=

 

Razip
()

MVC. M

Приветствую. Эта статья - http://habrahabr.ru/post/175465/ навела на мысль о том, что нужно задуматься: «все ли по фэн-шую у меня»? И в то же время не привела в пример ни одной реализации «правильной модели» (или я ее слепой не заметил).

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

Так вот, размышляя на эту тему мне в голову приходит следующее (возможно велосипед, поделитесь ссылкой если уже реализовано): существует некий PHP-интерфейс Resource, который содержит методы получения, удаления, изменения данных; существует класс MySQLResource, который реализует интерфейс Resource; и существует класс модели User, расширяющий класс MySQLResource и использующий интерфейс Resource для сохранения данных и их получения.

В описании я опустил валидацию поскольку еще не решил как она может быть использована в моделях. Есть вариант вынести стандартный набор методов валидации в некий класс, допустим Validation, и чтобы его расширяла модель и использовала его методы. Т.е. фактически мне необходимо наследование двух классов для реализации этой идеи. Я что-то слышал о trait, надо почитать. (=

Идем дальше. Каким образом передавать нужные данные для использования ресурса? Я предлагаю через конструктор. Т.е. конструктора у модели не будет и он наследуется у ресурса. Возможно не самое лучшее решение, но зато явное.

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

P.S. В моем приложении, например, контроллеры принимают зависимости через конструктор и создаются вручную без использования автозагрузчика в точке входа — файле index.php. Контроллер может потребовать модель в качестве зависимости и я могу передать ее. Т.к. модель будет создавать в корневом файле, где есть прямой доступ к настройкам, то проблемы их передачи в ресурс я не вижу.

Спасибо за внимание.

P.S.S. все выше изложенное мое субъективное мнение и взгляд на этот вопрос основанный на личном опыте работы с фреймворками и т.д.

 ,

Razip
()

Языковой обмен через Интернет

Приветствую. Хочу спросить о сабже. Был у кого-нибудь опыт подобного? Где искали иностранцев? Был ли толк от этого?

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

Но т.к. эти люди очень редко заходят в сеть, я считаю что пользы от этого мало.

Из проектов по обмену мне больше всего понравился SharedTalk, но там 2.5 человек онлайн изучающих русский.

 

Razip
()

ООП true way

Приветствую. Существует некая веб-страничка. Она получает данные с сервера через AJAX/WebSocket (способ не важен) в виде JSON-строки следующего вида.

Для авторизованных пользователей:

[{"id": 1, "name": "Худ. литература", "typed": 123040, "averageSpeed": 43420}]

Для неавторизованных:

[{"id": 1, "name": "Худ. литература"}]

Теперь к вопросу. Меня перестал устраивать просто расшифрованный JSON-массив с объектами (понадобилось создать интерфейсы к этим данным) и захотелось вынести эти данные в отдельный тип Category.

Я столкнулся с проблемой: как быть с полями для авторизованных пользователей? Ведь их не должно быть у неавторизованных.

Накидал пару решений:

1) сделать конструктор которому необязательно передавать эти два поля (для гостей).

2) сделать разные сущности вроде UserCategory (который содержит эти поля) и AnonymousCategory (который не содержит).

В поддержку этого решения скажу что если пользователь не авторизован, то по логике моего приложения обращения к этим полям не будет. Т.е. можно сделать некий общий интерфейс между UserCategory и AnonymousCategory, но UserCategory будет содержать также и специфичные для себя интерфейсы.

Какой способ лучше на ваше мнение? Может вы можете предложить что-то другое? Буду рад выслушать, спасибо! (=

 ,

Razip
()

Анти-чит для проекта

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

Я решил ввести режим «квалификация», который выводит произвольный текст в виде картинки с шумом мешающим роботу распознать текст (привет Клавогонкам) и по результатам набора которого засчитывается скорость в обычном режиме до этого порога.

Все бы хорошо, но данные (скорость и процент ошибок), присланные с клиента, могут быть не настоящими. Как быть?

Была идея рассчитывать эти данные на сервере, отправляя каждый введенный символ (или слово). Но как учитывать время ответа сервера? Спасибо.

 

Razip
()

Не могу в два JOIN'а

SELECT * FROM `category` 

JOIN `category_typed` ON `category`.`id` = `category_typed`.`category_id` WHERE `category_typed`.`user_id` = 1
JOIN `category_average_speed` ON `category`.`id` = `category_average_speed`.`category_id` WHERE `category_average_speed`.`user_id` = 1

Сабж. MySQL ругается:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'JOIN `category_average_speed` ON `category`.`id` = `category_average_speed`.`cat' at line 4
Суть: надо объединить записи трех таблиц по первичному ключу category и в то же время фильтровать category_typed и category_average_speed по user_id.

 

Razip
()

RSS подписка на новые темы