советую создать вопрос именно на эту тему, потому что причина похоже именно в этом ненормальном способе, опиши с какими ключами запускаешь браузер, куда он установлен и т.п.
<сарказм>а как тогда прятать от парсеров ботов? ведь тогда не получится скрывать тех кто якобы регался 100500 лет назад а комментить о политике начал только сейчас?</сарказм>
Все тут верно говорят, получение рута это квест, сильно зависящий от железа и версии ОС.
Но я точно помню, что для старых железок существовали jailbreak, приложения, которые, работая из под обычного пользователя как обычные приложения, устанавливали рут и даже снимали блокировку загрузчика (у меня был старый xiaomi смартфон не помню версии, как раз когда появилось что для разблокировки нужно было общаться с китайским саппортом)... это было до того как разделы начали шифровать... вполне допускаю что такие уязвимости могут найти и для некоторых относительно новых смартфонов.
efi не обязан уметь загружаться с не removable дисков, т.е. гарантия есть только для флешек и cdrom (кажется usb sata контроллеры тоже срабатывают)
@c0ngr3ssman
но если у тебя загрузка через grub сработала и дошла до кнопки - 'установить windows', то ДОСТАТОЧНО перед этим скопировать содержимое iso образа на диск в любой раздел (или второй диск, не важно) отличный от раздела, на который будет установка, то установщик его найдет и будет использовать.
т.е. создаешь разделы из linux, форматируешь первый как ntfs (не важно, потом можно еще раз форматировать) и второй fat32 чтобы на него положить файлы из iso windows (распаковать любым архиватором) а затем загружаешься с iso с помощью grub (т.е. у тебя где то и iso должен лежать)
в функции InsertNewMessage выведи текст своего сообщения на экран, чтобы удостовериться что этот текст в верной кодировке, либо сохрани его в файл, будет сразу ясно что происходит
можешь провести эксперимент и создать тестовую таблицу с тестовым текстовым полем и поместить туда тестовую строку "тест" буквально запросом из консольного клиента mysql? как минимум это исключит проблемы с базой а не твоим приложением.
Для исправления багов работать у работодателя может быть не обязательно.
Но подобные гарантии дают компании а не физические лица, так как это слишком высокая ответственность, не оставляющая дешевой возможности для ошибки.
Подписывая подобный договор вы должны быть готовы что вы будете способны оказывать поддержку в течении года.
Если приложение простое, такая поддержка не создает проблем, но если это ERP на 100500 функциональных элементов и документацией толщиной с книгу война и мир, то закладывать всего себя на гарантию поддержки (включающей исправление багов, что могут быть не по твоей вине, а к примеру в среде разработчиков, компилятора и даже ОС, но последнее можно подробно расписать в договоре).
p.s. мыслить нужно в т.ч. с позиции, какое наказание ты получишь, если не будешь в силах исполнить свои обязательства, и кстати это должно быть указано в договоре
Zettabyte, удалять старые записи из файла это его перезапись, ведь ненужные записи в начале.
Оформи хранение в нескольких файлах, по дате (например за сутки) и удаляй целыми файлами, это максимально быстро и просто, а главное не надо ничего блокировать.
Если у тебя одновременно запись из нескольких потоков, могу предложить писать сразу в несколько файлов (имя файла должно включать идентификатор источника), учитывая это при чтении, так как запись файла не атомарная операция (хотя неофициально, в пределах кластера фс - атомарная, но это неудобно).
Но, если есть многопоточных доступ, лучше воспользоваться готовыми реализациями бд, той же sqlite.
Очень давно пользовался блокировки, это на столько неудобный механизм межпроцессорной 'коммуникации', что лучше его забыть как страшный сон... Хотя во всяких баш скриптах такое встречается
Nickevernight, что значит как это сделать? это штатная опция в любом роутере, находится в настройках NAT, называется обычно виртуальный сервер или перенаправление портов
NeoAnderson, для этого разработчик должен постоянно мониторить все популярные 'раздачи' кряков своего приложения в интернете, реверсинженерить их и вкладывать в будущие версии логику для их скрытого определения, т.е. необходимо рядом с официальным поведением определения лицензионности, таскать неофициальный, скрытый, который бы детектировал кряки но не ругался напрямую а как то сообщал об этом в документах и по сети.......