Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Обзор инструментов SEO-оптимизатора и методов продвижения" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Марафон задач по С++. День 2
Марафон задач по С++. День 2 2012-04-04 15:51 Гайк Айрапетян Мы продолжаем наш марафон задач по С++. Сегодня второй день с очередной порцией интересных задачек. Напомню, что победитель получит 50% скидку на участие в предстоящем курсе С++. Управление памятью. Самые активные участники будут также отмечены. Свои ответы отправляйте на c.davydov.prog@gmail.com. В комментариях вопросы, пояснения и т.д. Решения принимаются до 21:00 следующего дня. Код присылать в *.cpp файлах. Рейтинг участников здесь: ЗАДАЧИ: 1. Карусель.
Написать программу, которая определяет, является ли одна строка циклической перестановкой другой строки. Циклическая перестановка – это такая, при которой циклическим сдвигом можно получить исходное слово. На вход подаются две строки. Выход YES/NO. Пример: Вход: 2. Дело об исчезающем прямоугольнике. Я набросал вот такой класс, вычисляющий площадь прямоугольника. Но он работает как-то не так. Помогите разобраться. #include class Rectangle { public: Rectangle (const int width, const int height) : width_(width) , height_(height) , area_(width_ * height_) {} public: const int area_; const int width_; const int height_; }; int main() { Rectangle sample(10, 5); std::cout << "Area of sample is " << sample.area_ << std::endl; return 0; } 3. Калькулятор.
Очень простая задача, самая простая во всем марафоне. Серьезно. Надо всего лишь написать последнюю цифру числа е в степени р. е > 1; 1 < р < 10000. Вход – два числа. Выход – последняя цифра. Вход: Выход: P.S. Подпишитесь на новости о С++ и марафоне задач здесь ↓ Что необходимо учитывать при загрузке файлов на сервер 2012-04-05 11:26 Дмитрий Лаврик Если Вы программируете на php, то, наверняка, хотя бы раз в жизни Вам приходилось сталкиваться с организацией загрузки файлов на сервер. Например, создавать простенький блог, в котором автор может прикреплять к своим статьям изображения. А может быть, огромную социальную сеть, где пользователи будут добавлять аватарки к своим профилям. Или же простейшую галерею фотографий. Объединяет все эти примеры одно – в них будет происходить загрузка пользовательского файла на сервер. Для того чтобы напомнить Вам, как файл загружается на сервер, рассмотрим простенький скрипт. Нам потребуется html –формочка и её php-обработчик. <form method="post" enctype="multipart/form-data"> <input type="hidden" value = "1048576"/> <input type="file" /> <input type="submit" value="Загрузить файл!" /> </form> В ней нет никаких примечательных моментов за исключением указания enctype = «multipart/form-data», которое необходимо, если с формы мы осуществляем загрузку файла. Теперь напишем самый простой php-обработчик: <?php if (isset($_FILES['file'])) // если была произведена отправка формы { // копируем файл из временной директории в ту же папку, где лежит обработчик copy($_FILES['file']['tmp_name'], $_FILES['file']['name']); echo 'Файл успешно загружен'; } Объединим это всё в один файл: <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1251"> <title>Загрузка файла на сервер</title> </head> <body> <form method="post" enctype="multipart/form-data"> <input type="file" /> <input type="submit" value="Загрузить файл!" /> </form> <?php if (isset($_FILES['file'])) // если была произведена отправка формы { // копируем файл из временной директории в ту же папку, где лежит обработчик copy($_FILES['file']['tmp_name'], $_FILES['file']['name']); echo 'Файл успешно загружен'; } ?> </body> </html> А теперь давайте попробуем поискать недостатки у данного скрипта. Во-первых, пользователь может просто не выбрать файл на форме. В итоге функция copy() попытается скопировать из временной директории файл, которого нет, что приведёт к ошибке. Во-вторых, пользователь может выбрать фотографию, которая весит, допустим, мегабайт 20 (а если он злоумышленник или шутник – видеофайл весом в 20 Гб). Стоит задуматься, нужны ли нам файлы такого размера у себя на сайте!? Обработаем в скрипте обе эти ситуации (изменения показываются в обработчике): <?php if (isset($_FILES['file'])) // если была произведена отправка формы { if($_FILES['file']['name'] == '') //если имя файла пустое echo ('Файл не выбран!'); elseif($_FILES['file']['size'] > 1048576) //если размер файла превышает 1 Мб echo ('Размер файла превышает 1 Мб!'); else{ // копируем файл из временной директории в ту же папку, где лежит обработчик copy($_FILES['file']['tmp_name'], $_FILES['file']['name']); echo 'Файл успешно загружен'; } } Ну что ж, кажется, всё! Осталось лишь где-нибудь добавить проверку на расширение загружаемого файла, и всё будет готово? Нет! Сейчас нам необходимо вспомнить, из каких частей состоит закачка файла на сервер: 1) файл с компьютера пользователя автоматически загружается на сервер в директорию, где хранятся все временные файлы. На денвере, например, это папка tmp; 2) мы выполняем все проверки и перемещаем файл из временного хранилища в реальное с помощью функции copy(). Т.е. смотрите, что происходит: файл сразу же оказывается на сервере ещё до того, как исполнится первая строчка нашего php-кода. Где же тогда ставить защиту от загрузки злоумышленниками и шутниками файлов огромных размеров? Может быть, с помощью скрытого поля на html-форме? Например: <form method="post" enctype="multipart/form-data"> <input name="MAX_FILE_SIZE" value = "1048576"/>' <input name="file" /> <input type="submit" value="Загрузить файл!" /> </form> Как бы бредово не выглядела данная запись, но она реально работает. С помощью дополнительного скрытого поля ввода: <input type="hidden" name="MAX_FILE_SIZE" value = "1048576"/>' мы на стороне клиента ставим ограничение на размер передаваемого файла. К сожалению, данная запись спасает только от обычных пользователей. Шутники или злоумышленники легко смогут подделать отправку формы. Поэтому, единственным нормальным способом ограничивать размер файлов, загружаемых на сервер, являются настройки в конфигурационном файле php на сервере. Рассмотрим необходимые настройки на примере файла php.ini на денвере. Находится он по адресу /usr/local/php5/php.ini. Советую Вам сейчас его открыть (если Вы конечно используете денвер). Итак, здесь нас интересует 552-ая строчка: upload_max_filesize = 2M Как мы видим, по умолчанию в денвере файлы больше 2Мб загружаться не будут. В реальных проектах это может быть много, а может быть и мало. Советую данную настройку менять исходя из конкретных решаемых задач. Всё, теперь мы можем грамотно управлять размером загружаемых на сервер файлов. Осталось только разобраться с их количеством. Согласитесь, что если пользователь подделает отправку формы и наплодит на ней 1000 полей ввода, в которые поместит по двухмегабайтному файлу, результат для нас также будет очень печальным. Установить максимальное количество загружаемых на сервер файлов мы можем с помощью специальной функции ini_set(). В самое начало нашего скрипта допишем: ini_set(‘max_file_uploads’, ‘5′); Ура! Теперь за один раз никто не сможет загрузить к нам на сервер более 5 файлов. Подводя итоги, хочу ещё раз перечислить все пункты, про которые Вы должны помнить, если организуете загрузку файлов на сервер: 1) у html формы обязательно указывайте enctype = «multipart/form-data» 2) делайте проверку, не является ли имя файла пустым (т.е. выбрал ли вообще пользователь файл) 3) делайте проверку на размер и тип загружаемого файла в скрипте 4) устанавливайте максимальный размер загружаемого файла в конфигурационном файле на сервере 5) с помощью функции ini_set() устанавливайте максимальное количество загружаемых файлов Конкурс «Твоя история успеха со Школой Программирования». Победителям – бесплатное обучение! 2012-04-05 14:52 Александр Никитин Друзья! Мы запускаем конкурс «Твоя история успеха с ШП»! Мы очень любим общаться с нашими студентами и выпускниками. Именно поэтому каждую среду в 18.00 мы проводим дни открытых дверей, куда зовем абсолютно всех, кому небезразлично программированием. К примеру, на вчерашней встрече наш хороший друг и бывший ученик Юра Аванасьев делился опытом по получению сертификата Zend по PHP. Это было очень ценно и интересно. Но, к сожалению с некоторыми своими учениками мы потеряли связь. А мы уверены, Вам есть что рассказать о своем обучении в ШП и о своих профессиональных успехах. Так появилась идея проведения конкурса. Напишите нам письмо в котором расскажите о том, как Школа Программирования повлияла на Вас, Вашу карьеру, отношение к программированию. Конечно же мы не оставим Вас без награды, об этом чуть ниже. Если Вы учились на наших курсах, или же смотрели наши видеокурсы, и это обучение позитивно отразилось на Вашем дальнейшем развитии, напишите нам об этом! О чем стоит написатьЧасто бывает сложно написать какой-то текст. Приводим здесь ряд вопросов, которые облегчат Вам эту творческую задачу: 1. Опишите свой проф. уровень до знакомства с ШП. Это лишь примерный список вопросов, которые призваны направить Ваши мысли в нужном направлении. В целом же можете избрать свою собственную манеру изложения. Желательно оформить отзыв в форме рассказа. УсловияВаши истории успеха отправляйте на почту support@prog-school.ru с темой «история успеха». В конкурсе будут участвовать все письма, отправленные до 22 апреля. Однако чем раньше Вы отправите нам свою историю, тем выше будет ее приоритет для нас. Мы расцениваем это как внимание с Вашей стороны. Что получат победители1 место – бесплатное участие в любом очном курсе ШП http://proglive.ru/courses. 2 место – бесплатное участие в любом онлайн-курсе ШП http://proglive.ru/courses. 3 место – любой видеокурс, который есть на данный момент http://proglive.ru/videocourses или появится до конца года. 4 место – авторы всех историй, которые будут искренними и интересными также получат от нас в подарок один из видеосеминаров, не представленных в продаже. Мы постараемся отблагодарить каждого, кому не безразлична Школа Программирования. P.S. Не откладывайте на потом. Напишите и отправьте нам свою историю прямо сейчас! Это повысит Ваши шансы на победу. |
Марафон задач по С++. День 2 2012-04-04 15:51 Гайк Айрапетян Мы продолжаем наш марафон задач по С++. Сегодня второй день с очередной порцией интересных задачек. Напомню, что победитель получит 50% скидку на участие в предстоящем курсе С++. Управление памятью. Самые активные участники будут также отмечены. Свои ответы отправляйте на c.davydov.prog@gmail.com. В комментариях вопросы, пояснения и т.д. Решения принимаются до 21:00 следующего дня. Код присылать в *.cpp файлах. Рейтинг участников здесь: ЗАДАЧИ: 1. Карусель.
Написать программу, которая определяет, является ли одна строка циклической перестановкой другой строки. Циклическая перестановка – это такая, при которой циклическим сдвигом можно получить исходное слово. На вход подаются две строки. Выход YES/NO. Пример: Вход: 2. Дело об исчезающем прямоугольнике. Я набросал вот такой класс, вычисляющий площадь прямоугольника. Но он работает как-то не так. Помогите разобраться. #include class Rectangle { public: Rectangle (const int width, const int height) : width_(width) , height_(height) , area_(width_ * height_) {} public: const int area_; const int width_; const int height_; }; int main() { Rectangle sample(10, 5); std::cout << "Area of sample is " << sample.area_ << std::endl; return 0; } 3. Калькулятор.
Очень простая задача, самая простая во всем марафоне. Серьезно. Надо всего лишь написать последнюю цифру числа е в степени р. е > 1; 1 < р < 10000. Вход – два числа. Выход – последняя цифра. Вход: Выход: P.S. Подпишитесь на новости о С++ и марафоне задач здесь ↓ Что необходимо учитывать при загрузке файлов на сервер 2012-04-05 11:26 Дмитрий Лаврик Если Вы программируете на php, то, наверняка, хотя бы раз в жизни Вам приходилось сталкиваться с организацией загрузки файлов на сервер. Например, создавать простенький блог, в котором автор может прикреплять к своим статьям изображения. А может быть, огромную социальную сеть, где пользователи будут добавлять аватарки к своим профилям. Или же простейшую галерею фотографий. Объединяет все эти примеры одно – в них будет происходить загрузка пользовательского файла на сервер. Для того чтобы напомнить Вам, как файл загружается на сервер, рассмотрим простенький скрипт. Нам потребуется html –формочка и её php-обработчик. <form method="post" enctype="multipart/form-data"> <input type="hidden" value = "1048576"/> <input type="file" /> <input type="submit" value="Загрузить файл!" /> </form> В ней нет никаких примечательных моментов за исключением указания enctype = «multipart/form-data», которое необходимо, если с формы мы осуществляем загрузку файла. Теперь напишем самый простой php-обработчик: <?php if (isset($_FILES['file'])) // если была произведена отправка формы { // копируем файл из временной директории в ту же папку, где лежит обработчик copy($_FILES['file']['tmp_name'], $_FILES['file']['name']); echo 'Файл успешно загружен'; } Объединим это всё в один файл: <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1251"> <title>Загрузка файла на сервер</title> </head> <body> <form method="post" enctype="multipart/form-data"> <input type="file" /> <input type="submit" value="Загрузить файл!" /> </form> <?php if (isset($_FILES['file'])) // если была произведена отправка формы { // копируем файл из временной директории в ту же папку, где лежит обработчик copy($_FILES['file']['tmp_name'], $_FILES['file']['name']); echo 'Файл успешно загружен'; } ?> </body> </html> А теперь давайте попробуем поискать недостатки у данного скрипта. Во-первых, пользователь может просто не выбрать файл на форме. В итоге функция copy() попытается скопировать из временной директории файл, которого нет, что приведёт к ошибке. Во-вторых, пользователь может выбрать фотографию, которая весит, допустим, мегабайт 20 (а если он злоумышленник или шутник – видеофайл весом в 20 Гб). Стоит задуматься, нужны ли нам файлы такого размера у себя на сайте!? Обработаем в скрипте обе эти ситуации (изменения показываются в обработчике): <?php if (isset($_FILES['file'])) // если была произведена отправка формы { if($_FILES['file']['name'] == '') //если имя файла пустое echo ('Файл не выбран!'); elseif($_FILES['file']['size'] > 1048576) //если размер файла превышает 1 Мб echo ('Размер файла превышает 1 Мб!'); else{ // копируем файл из временной директории в ту же папку, где лежит обработчик copy($_FILES['file']['tmp_name'], $_FILES['file']['name']); echo 'Файл успешно загружен'; } } Ну что ж, кажется, всё! Осталось лишь где-нибудь добавить проверку на расширение загружаемого файла, и всё будет готово? Нет! Сейчас нам необходимо вспомнить, из каких частей состоит закачка файла на сервер: 1) файл с компьютера пользователя автоматически загружается на сервер в директорию, где хранятся все временные файлы. На денвере, например, это папка tmp; 2) мы выполняем все проверки и перемещаем файл из временного хранилища в реальное с помощью функции copy(). Т.е. смотрите, что происходит: файл сразу же оказывается на сервере ещё до того, как исполнится первая строчка нашего php-кода. Где же тогда ставить защиту от загрузки злоумышленниками и шутниками файлов огромных размеров? Может быть, с помощью скрытого поля на html-форме? Например: <form method="post" enctype="multipart/form-data"> <input name="MAX_FILE_SIZE" value = "1048576"/>' <input name="file" /> <input type="submit" value="Загрузить файл!" /> </form> Как бы бредово не выглядела данная запись, но она реально работает. С помощью дополнительного скрытого поля ввода: <input type="hidden" name="MAX_FILE_SIZE" value = "1048576"/>' мы на стороне клиента ставим ограничение на размер передаваемого файла. К сожалению, данная запись спасает только от обычных пользователей. Шутники или злоумышленники легко смогут подделать отправку формы. Поэтому, единственным нормальным способом ограничивать размер файлов, загружаемых на сервер, являются настройки в конфигурационном файле php на сервере. Рассмотрим необходимые настройки на примере файла php.ini на денвере. Находится он по адресу /usr/local/php5/php.ini. Советую Вам сейчас его открыть (если Вы конечно используете денвер). Итак, здесь нас интересует 552-ая строчка: upload_max_filesize = 2M Как мы видим, по умолчанию в денвере файлы больше 2Мб загружаться не будут. В реальных проектах это может быть много, а может быть и мало. Советую данную настройку менять исходя из конкретных решаемых задач. Всё, теперь мы можем грамотно управлять размером загружаемых на сервер файлов. Осталось только разобраться с их количеством. Согласитесь, что если пользователь подделает отправку формы и наплодит на ней 1000 полей ввода, в которые поместит по двухмегабайтному файлу, результат для нас также будет очень печальным. Установить максимальное количество загружаемых на сервер файлов мы можем с помощью специальной функции ini_set(). В самое начало нашего скрипта допишем: ini_set(‘max_file_uploads’, ‘5′); Ура! Теперь за один раз никто не сможет загрузить к нам на сервер более 5 файлов. Подводя итоги, хочу ещё раз перечислить все пункты, про которые Вы должны помнить, если организуете загрузку файлов на сервер: 1) у html формы обязательно указывайте enctype = «multipart/form-data» 2) делайте проверку, не является ли имя файла пустым (т.е. выбрал ли вообще пользователь файл) 3) делайте проверку на размер и тип загружаемого файла в скрипте 4) устанавливайте максимальный размер загружаемого файла в конфигурационном файле на сервере 5) с помощью функции ini_set() устанавливайте максимальное количество загружаемых файлов Конкурс «Твоя история успеха со Школой Программирования». Победителям – бесплатное обучение! 2012-04-05 14:52 Александр Никитин Друзья! Мы запускаем конкурс «Твоя история успеха с ШП»! Мы очень любим общаться с нашими студентами и выпускниками. Именно поэтому каждую среду в 18.00 мы проводим дни открытых дверей, куда зовем абсолютно всех, кому небезразлично программированием. К примеру, на вчерашней встрече наш хороший друг и бывший ученик Юра Аванасьев делился опытом по получению сертификата Zend по PHP. Это было очень ценно и интересно. Но, к сожалению с некоторыми своими учениками мы потеряли связь. А мы уверены, Вам есть что рассказать о своем обучении в ШП и о своих профессиональных успехах. Так появилась идея проведения конкурса. Напишите нам письмо в котором расскажите о том, как Школа Программирования повлияла на Вас, Вашу карьеру, отношение к программированию. Конечно же мы не оставим Вас без награды, об этом чуть ниже. Если Вы учились на наших курсах, или же смотрели наши видеокурсы, и это обучение позитивно отразилось на Вашем дальнейшем развитии, напишите нам об этом! О чем стоит написатьЧасто бывает сложно написать какой-то текст. Приводим здесь ряд вопросов, которые облегчат Вам эту творческую задачу: 1. Опишите свой проф. уровень до знакомства с ШП. Это лишь примерный список вопросов, которые призваны направить Ваши мысли в нужном направлении. В целом же можете избрать свою собственную манеру изложения. Желательно оформить отзыв в форме рассказа. УсловияВаши истории успеха отправляйте на почту support@prog-school.ru с темой «история успеха». В конкурсе будут участвовать все письма, отправленные до 22 апреля. Однако чем раньше Вы отправите нам свою историю, тем выше будет ее приоритет для нас. Мы расцениваем это как внимание с Вашей стороны. Что получат победители1 место – бесплатное участие в любом очном курсе ШП http://proglive.ru/courses. 2 место – бесплатное участие в любом онлайн-курсе ШП http://proglive.ru/courses. 3 место – любой видеокурс, который есть на данный момент http://proglive.ru/videocourses или появится до конца года. 4 место – авторы всех историй, которые будут искренними и интересными также получат от нас в подарок один из видеосеминаров, не представленных в продаже. Мы постараемся отблагодарить каждого, кому не безразлична Школа Программирования. P.S. Не откладывайте на потом. Напишите и отправьте нам свою историю прямо сейчас! Это повысит Ваши шансы на победу. |
В избранное | ||