Сообщество - Программирование на PHP

Программирование на PHP

64 поста 1 980 подписчиков

Популярные теги в сообществе:

Бесполезный язык

Бесполезный язык PHP, Украинский язык, Программирование, Комментарии, LinkedIn
Показать полностью 1
78

История одной галочки

Это - галочка.  Я сделал ее лет 17 назад, когда мне самому было 15 и я только начал изучать PHP.

История одной галочки Администрация, PHP, Программирование, Рукожоп, Uspeli, Бунт

Галочка позволяла закрывать контент 18+ или личные комментарии на сайте.

Галочка была сделана за 10 минут.

И представляла собой просто значение в базе 0 - 1.


Галочку сделал практически школьник. Но она и сейчас спасла бы Пикабу от бунта и от потери 50 000 человек.

@admin, у вас правда нет программиста, который может добавить 1 поле в базу и чекбокс к комментариям?


Просто же:

<input type="checkbox" name="NSFW">


Вот и все. Осталось поймать значение и записать в базу единичку!

<?php

if (isset($_POST["NSFW"])){ /* Магия записи в базу */ }

?>


Я уже молчу о чем-то более сложном - как определение контента 18+ по тем же  дубликатам, например. Эх. Уже просто нет слов.

Показать полностью
9

Насколько ты предсказуем?

Хочу поделится историей создания одного сайтика. Так уж совпало, что не так давно я решил изучить один PHP фреймворк (YII2), но тренироваться на стандартных примерах типа интернет магазина было скучно, поэтому я решил придумать что-то оригинальное. И тут я наткнулся на это видео

И тут меня накрыло. Если вкратце, речь идет о том, что если бы человеку предложили игру, в котором он мог сделать выбор, взять одну или две коробки. В первой коробке всегда 1000$, во второй либо 0, либо миллион. Также есть некая сущность которая может предсказать выбор человека, и если эта сущность считает, что человек возьмет обе коробки, то во вторую коробку она не положит ничего. И если, вероятность верно предсказать действия человека (взять одну или две коробки), больше 50%, то получается парадокс: теория игр говорит что выгоднее всего брать обе коробки, а статистика что только одну.


Это подводит нас к размышлениям о свободе воли человека и о возможности предсказать его действия. Но самое главное, в условиях игры сказано, что ни человек, ни компьютерная программа, которая будет делать выбор, не имеют права подбрасывать монетку/использовать генератор случайных чисел. Это показалось мне интересным, я задумался, может ли мозг генерировать абсолютно случайные числа, а лучше последовательности чисел. Для начала я сравнил наше сознание с тем, что мне как программисту ближе, с нейронными сетями. Поискав я наткнулся на эту серию статей на Хабре: Нейросети для чайников(https://habr.com/ru/post/143129/).


Результаты были неутешительны, большинство нейросетей детерминированы, то есть зная состояние сети в данный момент можно предсказать ее решение. Оставалась надежда только на человеческий мозг. Я конечно мог проверить только свою способность к генерации случайных чисел, но один человек это не показатель, и тут мне пришла в голову идея написать сайт, на котором любой желающий может проверить то, насколько случайны последовательности чисел, выдаваемые его мозгом.


Дизайн у сайта получился простенький (читай "И так сойдет"):

Насколько ты предсказуем? Длиннопост, Сайт, Программирование, Генератор случайных чисел, Видео

Теперь можно проверить, насколько случайна та или иная последовательность, по нескольким показателям. И получить средний результат в процентах.

Насколько ты предсказуем? Длиннопост, Сайт, Программирование, Генератор случайных чисел, Видео

Для того кому интересно как оцениваются величины, а также как устроен сам сайт, я оставлю ссылку на GitHub.


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


Итак, кому интересно могут зайти по следующим ссылкам:

GitHub: https://github.com/BasValery/RandomSeed

Сам сайт: http://randomseed.ml/

Показать полностью 2

Помогите с кодом

Доброго времени суток. Занялся изучением среды разработки DevelNext и столкнулся с проблемой. Не могу додуматься, как вытащить данные из определенной ячейки таблицы.

Например есть таблица, в ней три колонки: ID, Name, Value.
Необходимо, чтобы при нажатии кнопки выводилось значение Value по заранее заданному ID.

Пы.Сы. Насколько знаю, в DevelNext используется jPHP.

Шутки про пхп и не только

Шутки про пхп и не только

Красивое резюме

Спустя 3 года работы программистом я решилась искать другую работу. Но вот загвоздка - хотят красивое резюме.
Может кто знает, где найти ресурс который сделает красиво или у кого-то есть примеры красивого резюме?
Так как уходить собралась со своей первой работы, знаний какое красивое резюме хотят видеть HR и что это за зверь такой я не знаю(

14

День рождения и квесты!

Все события произошли ещё в июне прошлого года, но написать о всём том решил я только сейчас. Почему? Не знаю! Хотел ещё тогда, но как-то руки не доходили, а потом уже подзабылось как-то и стало не очень актуально, но сейчас по некоторым причинам немножко снова взялся за этот проектик, вот и вспомнил, захотелось поделиться теми классными впечатлениями и событиями, что были тогда, в самый первый раз :)

Кому-то покажется это всё ерундой и чем-то не интересным, а кто-то, быть может, с интересом прочитает, каждому своё, но я чувствую, что сейчас я должен это всё написать.


Дело в том, что общался я тогда с одной замечательной девушкой, хорошо общались мы, было круто! Но сейчас история общения и что было дальше не особо интересна, не о ней речь. Единственное, что нужно знать, что девушка та очень любит сов в любом их виде (нет-нет, про их поедание речи не идёт!). И захотелось мне сделать подарок ей на день рождения, да не обычный какой-нибудь, а особый, какого раньше ещё не делал никому! Решил я сделать для неё квест небольшой. Но делать просто квест одноразовый -- это как-то не круто. Поэтому решил написать я небольшой квестовый движок, чтоб потом можно было какие угодно задания туда писать и всё менять на ходу, без необходимости лезть в какие-то исходники и вручную править код, а чтоб всё красивенько и удобненько работало через интерфейс приятный, да и чтоб можно было потом и другие квесты тоже проводить, штука-то полезная и в перспективе тоже, ведь можно применить много где.

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

Делать всё это было весьма интересно! Вот ещё раз убедился, что когда под вдохновением делаешь что-то для кого-то, то мозг намного больше энергии на это всё выделяет, как-то намного охотнее и интереснее это делать, да и приятнее тоже.

Пока писал движок, в это же время готовил разные части подарков, которые должны были тоже участвовать в квесте, хоть я пока точно не представлял, как именно это будет. Среди них было два набора стикеров с совами (заказывал где-то), кружка с собственным дизайном, тоже с совами и ещё другими животными; и ещё вручную на маленьком прямоугольном кусочке фанеры выжег тоже сову, получилась прикольная такая фанерная карточка с совой, пусть и немного криво выжженой, потому что большим жалом маленький рисунок не очень удобно выжигать, особенно, когда опыта в этом особо нет.. )

Ещё подготовил аудиозапись специальную, FM-передатчик, роутер с OpenWRT на борту и настроенным веб-сервером и Wi-Fi с определённым паролем, были некоторые задумки по этому поводу тоже.

Две недели в свободное время я пилил движок (больше по ночам, днём другие дела были), наверное, даже жил этим, представлял, что и как можно сделать, какие задания и т.д. Но точного сценария так и не было.

В движке есть поддержка заданий, карта, инвентарь. Меня очень пёрло от мыслей о том, что можно связать реальность и виртуальность, потому что предметы, что были в реальности, я загнал и в движок тоже, они могли выдаваться за задания и находиться в инвентаре игрока. Карта нужна для того, чтоб знать, куда идти, если это необходимо по заданию (заодно и я мог наблюдать, где находится сейчас она). А в самих заданиях можно писать текст, по разному оформленный, картинки вставлять, там удобный редактор, позволяющий делать всё это. В заданиях можно указывать координаты, куда нужно идти; запрашивать определённый ответ, присваивать определённый текст кнопки для выполнения задания, чтоб можно было не просто на "Дальше" нажимать, а именно в зависимости от тематики задания указывать определённый текст на кнопке. Также можно указать предмет из инвентаря, необходимый для выполнения задания, а при завершении задания можно выдать какой-то предмет, а также есть возможность указать следующее задание, таким образом строится цепочка заданий в нужном порядке. Хотел сделать возможность разветвления: разные кнопки -- разные следующие задания, но подумал, что это не особо нужно было, на тот момент достаточно было и одной сюжетной ветки, к тому же, времени было мало. Ещё были мысли тогда про такой тип заданий, где нужно придти в определённую точку на карте, и лишь после этого можно будет продолжить, но тоже пока реализовывать не стал.


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


Но вот настал тот самый день!
Помню, это была пятница, шёл дождик. Я назначил время старта на 3 часа дня. А сам только в два часа закончил делать движок. И то, не всё до конца закончил, со стороны "админки" там вообще почти ничего нет, кроме самого необходимого минимума. И вот за час до начала игры пошёл готовить локации. Опять же, не было ни сценария, ни плана, были просто разные части подарков и некоторые идеи. И лил дождь. Ввиду того, что по работе есть много знакомых в городе, потому что мы обслуживаем разные организации, то пошёл я в первую очередь именно к тем людям, которых знал уже, в фирмы какие-то, в магазины. Пришёл, объяснил, что придёт девушка, отдаст шишку лесную (они у неё заранее были, в день рождения отдал вместе с коробочкой-инвентарём, а шишки -- это как валюта), а ей в обмен на шишку должны будут отдать очередной предмет.

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

Ходил также и к незнакомым людям, в пиццерию, в цветочный магазин, помню, зашёл, объяснил всё это той девушке, что там работала, она так заинтересовалась и так серьёзно к этому отнеслась, что даже на бумажке инструкции для себя записала и тоже ждала с нетерпением нужного времени!

В офисе на работе на окошко поставил плеер с зацикленной аудиозаписью, в которой бот Максим говорил своим голосом нужный циферный код, и всё это транслировалось по обычному радио, на частоте 108.0 FM. Для передачи использовал недорогой FM-трансмиттер, купленный на алике и собранный вручную (это был DIY-комплект).

Недалеко от рабочего офиса находится другая обслуживаемая нами фирма, туда поставил небольшой роутер на окошко, а в роутере... А об этом позже :)

За пол часа до начала игры сел писать сценарий. Было известно, где какие части подарков находятся, в каких локациях, и какие коды на них написаны. Задания, состоящие просто из текста были не так интересны, поэтому решил привлечь кота Пушина, будто бы он обращается к нашей главной героине и просит помощи в поиске пропавших сов! Сначала было пару заданий для обучения, где показано было, как вводить ответы, как по карте ориентироваться, а потом уже началась сама история сюжетом, который был буквально на ходу придуман.

Выглядело это всё вот так:

В списке заданий изначально отображались только активные задания, а уже позже, через пару месяцев после всех этих событий, добавил возможность просматривать уже выполненные задания, чтобы ещё раз пройтись по той истории :)

И, кстати, активных заданий может быть несколько, поэтому, всё же, можно делать разные сюжетные линии и связывать их. Например, в одной ветке в каком-то задании будет выдан предмет, который нужен будет в задании другой ветки. Так-то!

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

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

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

Нажали на кнопку и попали в следующее задание.

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

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

Некоторые предметы, хоть они и не участвовали непосредственно в игре, но были подарены на ДР, решил тоже добавить в инвентарь. Они ведь есть у неё уже, так что пусть будут и в инвентаре!

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

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

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

Итак, продолжим проходить по заданиям! Тут я сначала нарочно ввёл неправильный ответ, чтобы показать, что происходит при этом.

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

Ввели правильный ответ, следующее задание.

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

Если нажать на ссылку "показать локацию на карте", то откроется, как ни странно, карта, где будет указано, куда идти. А также можно быстро вернуться обратно к заданию.

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

А ещё на карте можно посмотреть свою текущую позицию, которая, кстати, отображается тоже в виде совы. Ну, почему бы и нет? Жмёшь на кнопку "Где я?", а тебе в ответ вот это:

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

И снова возвращаемся к заданиям. Вот, всё началось!

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост
День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост
День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост
День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост
День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

А вот в следующем задании уже нужно было "перехватывать радиоэфир" для того, чтобы узнать код. Как я уже писал выше, с плеера через FM-трансмиттер транслировался записанный аудио-код, который и нужно было ввести в качестве ответа на задание. Помню, сидел я тогда в офисе, смотрел из окошка (второй этаж), и вот она подошла к окну, но тут я уже вышел помочь, потому что до этого там ещё парень с девушкой были в качестве помощников, но они потом ушли по делам, поэтому дальше решил я сам сопроводить, к тому же, приближалась сложная часть. Технически сложная. Может, и не сложная, но человеку, который этим не занимается, всё же, не совсем понятная. Уже тогда у главной героини торжества впечатления были очень хорошие, эмоций тоже много! Всё же, не каждый раз так интересно день рождения проводится :)

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

Настало время рассказать про ту штуку с роутером, хотя, думаю, из следующего задания всё и так понятно будет :)

Но суть в том, что на роутере был поднят небольшой веб-сервер, где была простенькая веб-страничка со ссылкой на другую страницу, где просто лежали файлики текстовые, в одном из них был ответ на задание, а ещё там были мои заметки, которые тоже были частью подарка. Этот роутер раздавал не только wi-fi, но и интернет, чтобы можно было, будучи подключенным к нему, не только в его файлах поковыряться, но и доступ к интернету иметь для продолжения выполнения заданий. Единственное, чего я не учёл -- это то, что в той фирме рабочий день окончился, и они почему-то отключили интернет, поэтому роутер раздавал просто wi-fi, но это не стало большой проблемой.

К сожалению, не могу показать сейчас, как выглядела страничка из роутера, потому что за этот год уже много раз там всё переделывалось, а сам роутер тот трудится сейчас совершенно в другом месте.

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

И вот всё уже подходит к завершающей стадии.

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

Самое последнее задание -- чаепитие :)

День рождения и квесты! Сова, Движок, Квесты в реальности, Квест, Сайт, Разработка, Длиннопост

Даже сейчас, делясь с вами этими заданиями, сам снова испытал хотя бы немножко те клёвые эмоции, что были тогда! Для меня это было чем-то необычным, ведь не часто такое происходит, да и реакция девушки, для которой всё это делалось, тоже порадовала весьма! А учитывая то, что планировать я не умею, а тут удалось так хорошо всё провернуть, то это вдвойне приятней, хотя, учитывая то, что сам квест был написать за пол часа до его начала... :)

И в начале я писал, что не знаю, зачем захотелось поделиться этим всем, но сейчас понимаю, что оно точно того стоило! А движок до сих пор используется порой на каких-нибудь праздниках или других событиях, и пусть проводятся не такие сложные и масштабные квесты, но приятно помнить о том, с чего всё началось, и что сейчас это тоже приносит пользу.


Всем спасибо за внимание и за возможность поделиться :)

Надеюсь, мне удалось хоть немножко передать ту необычную атмосферу, заинтересовать вас и поколебать стрелку мимиметра )

Показать полностью 18

Придумай алгоритм

Сегодня задача была такая...по первым 3 буквам или более, выдать наиболее подходящие фамилии и имена в поиске. средствами БД нельзя было решить этот вопрос.

Отличная работа, все прочитано!