Ищу удаленную работу веб-программистом на PHP/Yii 2
Навыки:
- PHP (5/7)
- JavaScript/jQuery
- HTML/CSS
- MySQL/SQL
- Git
- Английский (C1)
Не верстаю.
Писать на work.razip собака yandex.com
Навыки:
Не верстаю.
Писать на work.razip собака yandex.com
Привет.
Что умею сейчас: PHP (есть небольшой опыт с Symphony2), JavaScript (работал с jQuery), MySQL/SQL, HTML/CSS (но не верстаю), немного умею в Git, довольно неплохо знаю английский.
Хочу получить опыт работы с мейнстримными PHP/JS-фреймворками и CMS в продакшене.
Писать тут или на:
work.razip гав-гав yandex.com
<!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() смотрел), только вот с загрузкой проблема - по идеи, после загрузки должен быть пустой холст, но нет - нарисованная линия остается нетронутой. Никаких ошибок в консоле нет. В чем может быть дело? Спасибо!
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Сабж. Как? Заранее спасибо.
Приветствую. Выручайте, уже сломал голову. Суть задачи в том, что я пишу таймеры обратного отсчета, которые стартуют в определенный 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Заранее благодарю всех отписавшихся.
upd: лол, сейчас архив с кодом скину
Привет ЛОР.
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 когда идет удерживание? Спасибо.
Привет ЛОР.
Игра про мафию, графика примерно на уровне 90х, 2D и/или изометрия. В игре можно красть людей, выслеживать что-то (?). Передвигается персонаж по карте либо пешком, либо на машине если не ошибаюсь. Можно нанимать бандитов. Бой пошаговый.
Я понимаю что информации мало, но может у кого-то будут какие-нибудь предположения. Спасибо.
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 вообще? Спасибо.
Привет. Сталкиваюсь с этим https://bpaste.net/show/9e4e7098e32d Как можно решить проблему?
P.S. дабы не создавать лишнюю тему спрошу тут: как сохранить уровень громкости чтобы он не сбивался при перезагрузке? Когда я ставил ALSA, там в одном WARNING'е была написана команда добавления какого-то сервиса (rc-update add <service> default), а вот какого - не помню.
И вообще есть ли возможность через emerge глянуть эти WARNING для всех пакетов?
Приветствую.
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.В чем может быть проблема? Спасибо.
Приветствую. Собственно сабж. PulseAudio. «Куда копать»?
Приветствую. При загрузке запускаю lightdm, ввожу логин и пароль, и вижу ошибку:
Failed to load session "cinnamon"https://bpaste.net/show/cf5c7a04016f
В чем может быть дело? Спасибо.
Приветствую. При загрузке компьютера Grub2 выводит консоль и нет возможности загрузится в систему. Загрузчик настраивал следующим образом по HandBook:
grub2-install /dev/sdb
grub2-mkconfig -o /boot/grub/grub.cfgКонфигурация grub.cfg - https://bpaste.net/show/5413013b81f1.
В чем может быть проблема?
Приветствую.
У меня есть проблема - черный экран при запуске. При сворачивании/разворачивании игры видно что в ней происходит.
Моя последняя надежда - попробовать оконный режим, который, зараза, ставиться только через настройки. =( А их файл закодирован.
Если кто-нибудь поделится со мной сохранением с оконным режимом, то буду очень признателен! (=
Приветствую. Эта статья - http://habrahabr.ru/post/175465/ навела на мысль о том, что нужно задуматься: «все ли по фэн-шую у меня»? И в то же время не привела в пример ни одной реализации «правильной модели» (или я ее слепой не заметил).
Если убрать воду, то можно получить что-то вроде: модель отвечает за работу с данными (предоставляет интерфейсы для работы с ними), их валидацию и косвенную работа с ресурсом для хранения данных (об этом ниже).
Так вот, размышляя на эту тему мне в голову приходит следующее (возможно велосипед, поделитесь ссылкой если уже реализовано): существует некий PHP-интерфейс Resource, который содержит методы получения, удаления, изменения данных; существует класс MySQLResource, который реализует интерфейс Resource; и существует класс модели User, расширяющий класс MySQLResource и использующий интерфейс Resource для сохранения данных и их получения.
В описании я опустил валидацию поскольку еще не решил как она может быть использована в моделях. Есть вариант вынести стандартный набор методов валидации в некий класс, допустим Validation, и чтобы его расширяла модель и использовала его методы. Т.е. фактически мне необходимо наследование двух классов для реализации этой идеи. Я что-то слышал о trait, надо почитать. (=
Идем дальше. Каким образом передавать нужные данные для использования ресурса? Я предлагаю через конструктор. Т.е. конструктора у модели не будет и он наследуется у ресурса. Возможно не самое лучшее решение, но зато явное.
Почему я не представляю использование такого решения в нынешних фремворках? Потому-что архитектура не та и вынуждает пользователя в контроллере прописывать настройки для ресурса.
P.S. В моем приложении, например, контроллеры принимают зависимости через конструктор и создаются вручную без использования автозагрузчика в точке входа — файле index.php. Контроллер может потребовать модель в качестве зависимости и я могу передать ее. Т.к. модель будет создавать в корневом файле, где есть прямой доступ к настройкам, то проблемы их передачи в ресурс я не вижу.
Спасибо за внимание.
P.S.S. все выше изложенное мое субъективное мнение и взгляд на этот вопрос основанный на личном опыте работы с фреймворками и т.д.
Приветствую. Хочу спросить о сабже. Был у кого-нибудь опыт подобного? Где искали иностранцев? Был ли толк от этого?
Мой опыт: общался раз шесть с двумя носителями и научился хоть как-то рассказывать о себе, говорить о простых вещах и т.д.
Но т.к. эти люди очень редко заходят в сеть, я считаю что пользы от этого мало.
Из проектов по обмену мне больше всего понравился SharedTalk, но там 2.5 человек онлайн изучающих русский.
Приветствую. Существует некая веб-страничка. Она получает данные с сервера через AJAX/WebSocket (способ не важен) в виде JSON-строки следующего вида.
Для авторизованных пользователей:
[{"id": 1, "name": "Худ. литература", "typed": 123040, "averageSpeed": 43420}]Для неавторизованных:
[{"id": 1, "name": "Худ. литература"}]Теперь к вопросу. Меня перестал устраивать просто расшифрованный JSON-массив с объектами (понадобилось создать интерфейсы к этим данным) и захотелось вынести эти данные в отдельный тип Category.
Я столкнулся с проблемой: как быть с полями для авторизованных пользователей? Ведь их не должно быть у неавторизованных.
Накидал пару решений:
1) сделать конструктор которому необязательно передавать эти два поля (для гостей).
2) сделать разные сущности вроде UserCategory (который содержит эти поля) и AnonymousCategory (который не содержит).
В поддержку этого решения скажу что если пользователь не авторизован, то по логике моего приложения обращения к этим полям не будет. Т.е. можно сделать некий общий интерфейс между UserCategory и AnonymousCategory, но UserCategory будет содержать также и специфичные для себя интерфейсы.
Какой способ лучше на ваше мнение? Может вы можете предложить что-то другое? Буду рад выслушать, спасибо! (=
Создаю онлайн-игру, суть которой - набор текста на скорость с последующим построением списка самых быстрых пользователей. В связи с этим появилась потребность не позволять игрокам присылать «липовые» результаты набора.
Я решил ввести режим «квалификация», который выводит произвольный текст в виде картинки с шумом мешающим роботу распознать текст (привет Клавогонкам) и по результатам набора которого засчитывается скорость в обычном режиме до этого порога.
Все бы хорошо, но данные (скорость и процент ошибок), присланные с клиента, могут быть не настоящими. Как быть?
Была идея рассчитывать эти данные на сервере, отправляя каждый введенный символ (или слово). Но как учитывать время ответа сервера? Спасибо.
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| следующие → |