Ищу удаленную работу веб-программистом на 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
следующие → |