Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (3) [1] 2 3  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> Как я стал программистом, или не стал...
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


Пятница. Стопедясят в организме, хочу пооткровенничать. smile.gif

Собственно это может послужить напутствием. А может и книгу напишу потом, если будет интересно и не надоест. Просто по вопросам в форуме я часто вижу себя, в самом начале php-карьеры. О том и хочу поведать.

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

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


И так.

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

В лохматых 1990-х (точнее в 1989 году) я купил себе первый персональный компьютер. Назывался он, дай Бог памяти, "Спектрум". Это было нечто))) Наверняка многие не знают, что это по сути была приставка к телевизору, понятие "монитор" тогда было как сейчас... ну наверное гуглмобиль. smile.gif

Нужно обозначить одно обстоятельство. Купил я его не для личного пользования. Тогда вообще интернета небыло, да и компьютер был как сейчас искуственный интеллект. Где то оно кончно надо, но в жизни совершенно лишнее и не нужное. Да и небыло его вовсе.

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

И еще одно отступление. Я до этого работал радиомехаником. А еще раньше, в институте, где пришлось учиться, нам преподавали бэйсик и фортран. Я был очень горд, что на зачетах умел програмно рисовать синусоиду! smile.gif

Сложив это все вместе, можно сделать вывод, что я не остался равнодушен к приобретению. И по ночам ковырял этот спектрум вдоль и поперек.

Первая моя программка была стрелялкой. Нужно было, перемещая стрелками пулемет, попасть в самолетики, которые рандомно летали туда-сюда. Я до сих пор ей горжусь))) Потому что написана она была исключительно методм тыка.

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

Так вот. Первые строчки на веб-языках.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


Еще 50 грамм... Грешен smile.gif

Так вот. Между первой и второй этим баловством и тем, чем я занимаюсь сейчас, прошло много, очень много времени. Я конечно тыкался как слепой кутёнок в Эс-один (бухгалтерию нужно было держать в узде), пытался прогать на визуал-бэйсике (ну ексель, дело серьёзное), база данных моих магазинов (была целая сеть smile.gif ) была написана мною на Access. Наверняка сейчаc никто и не знает, что это)))

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

Сначала конечно же javascript. Это было не так сложно, пишешь код, тычешь в браузер, получаешь... Когда я работал радиомехаником, было гораздо серьёзнее и ответственнее. Паяешь схему, включаешь в сеть, получаешь... ДЫМ!

Тут все проще. Не получилось, есть консоли, дебаги и пр. Лафа!

Но на одном джаваскрипте далеко не уедешь. Началось серверное программирование.

Первое моё знакомство с ним почему то ( так встали звезды) произошло с перловки. Perl. Красивый, но очень замудренный язык. И я, будучи лентяем, а соответственно двигателем прогресса biggrin.gif , незамедлительно обратил внимание на PHP.

А вот тут полный гешефт и куртизанки!

Да, забегая вперед, юзал я позже и сишку и джаву и питон. Но не нашел практического примерения. Хотя там много интересного.

А вот первое знакомство с PHP было довольно прикольным.

Сразу же с чем я столкнулся, и не мог понять: клиент-серверные взаимодействия. Вот хоть убей. Я готов был расколотить монитор, готов был скушать мышку, но никак не мог понять, почему в пределах одного компьютера нельзя получить желаемого между javascriot и php.

Сейчас расскажу тем, кто тоже мучается, как это все быстро усвоить. Мне помог холодильник. smile.gif


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


Холодильник, он всегда помогает! И насчет "стек" - недождетесь. Я придумал новую развлекуху :) Конкурсы не впечатляют, холивары надоели, а вот кому пооткровенничать слабо? :D Или все сходу гурами родились?

Но я продолжу.

А получилось всё просто. Было очень непонятно, почему это классно работает:
<input name="my_text" id="my_text" type="text" value="" />
<input
name="ok" onclick="writes()" type="submit" value="Пуск" />


<script
type="text/javascript">
function
writes(){
var g = document.getElementById('my_text').value;
alert(g);
}
</script>

А вот это нет ((((
<input name="my_text" id="my_text" type="text" value="" />
<
input name="ok" onclick="writes()" type="submit" value="Пуск" />

<
script type="text/javascript">
function writes(){
alert('<?php echo @$_POST['my_text']; ?>');
}
</script>


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

А холодильник то тут вот причем. Я так долго бился, что захотел жрать. И пошел к холодильнику за колбаской. Ну или марцепаном, теперь не вспомню... И когда шел - понял. Что жрать мне хочется возле компа, а марцепан в холодильнике. И чтобы его достать, нужно оторвать жопу от стула и туда сходить. Так же и браузер отрывает задницу, идет на сервер, и получает там корм. Нужно запрос ему отправить. Ну как минимум формой:
<form action="" method="post">
<
input name="my_text" id="my_text" type="text" value="" />
<
input name="ok" type="submit" value="Пуск" />
</
form>

<?php
echo @$_POST['my_text'];
?>


А возле компьютера (в браузере) кушать никто не приготовил.

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


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


Дальше - больше. В то время я понятия не имел, что можно пользоваться гуглом. Вернее я знал, что там можно искать ответы на вопросы, но ответов было крайне мало и они были весьма противоречивы. Кстати, отттуда я и почерпнул уверенность, что лучший серверный язык, это перл. Но это было немного раньше, слава Богу этот же Гугл (на то время Рамблер) подсказал, что есть еще и PHP. Тогда рамблер рулил, даже яндекса толком никто не знал)))

Вообще мне срочно понадобился скрипт обратной связи. Почтовый тобишь. На перловке я толко освоил азы, а тут дело серьёзное. И вот первой строчкой поиска выпал "почтовый скрипт Дениса.." только имя помню. Там были регулярки. Там была куча всего нового и непонятного. В чем я тоже разбирался методом тыка. И когда это надоело, я по совету Valick'a попер в книжный магазин. И купил книгу про PHP. Не, не для чайников. По крайней мере она себя позиционировала, как офигенная книга для гуру.

Да, там было много нового и интересного. И я очень быстро написал первый сайтик для любимого кота. smile.gif Он, зараза, до сих пор жив и трется о ноги. Жрать просит, гад.

Но вот незадача, что-то пошло не так. Загрузка файлов никак не удавалась. Тогда я познал великую и могучую силу форумов. Первым был софттайм. На вопрос "что не так, ведь в КНИГЕ написно!" мне авторитено ответили - книгу пишут люди. А им свойственно ошибаться. Привет Valick'у.

Так что первый и основополагающий совет от меня:
НИ КОМУ НЕ ВЕРЬТЕ.

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


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


А продолжу. smile.gif

Вернее вернусь немного назад. К своему первому сайту, который я ваял сначала методом тыка, потом с помощью книги и форумов. Смешно, но эти скрипты сохранились у меня в первозданном виде. А потому сейчас будет легче рассказать о том тернистом пути, который проходят почти все програмисты, особенно те, кто занимаются самообразованием.

Кстати, не помню кто, но кто-то шибко умный сказал:
Цитата
Образование помогает найти работу, самообразование - сделать карьеру.


Итак, приступим к вскрытию.

Ну разумеется ни о какой единой точке входа я и не помышлял. Одна страница- один файл. Вспомогатнльные скрипты писались в файлах с расширением .inc (именно так рекомендовала та первая дремучая книга).

В те времена уже входила в моду MVC, но схема, которая была приведена в вики как иллюстрация:

Присоединённое изображение
Присоединённое изображение


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


Вызывала только одну устойчивую ассоциацию:

Присоединённое изображение
Присоединённое изображение


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


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

В результате мой код выглядел вот так (орфография первоисточника оставлена без изменений :D ):

ТА-ДАМ!
<?php 
$name= iconv('utf-8', 'windows-1251',$_GET['name']);
$mes= iconv('utf-8', 'windows-1251',$_GET['mes']);
if($_GET['name']!="" && $_GET['mes']!=""){
$coll=date("U");

$date=date("d.m.y");
$name=stripslashes($name);
$name=htmlspecialchars($name);
$mes=stripslashes($mes);
$mes=htmlspecialchars($mes);
$mesh=explode("\n",$mes);
$ms=count($mesh);
for($i=0; $i<$ms; $i++){
$mesf.=$mesh[$i];
$mesf.="<br />";
}

$mes=wordwrap($mes,80,"<br />",1);
$text="<div id='d_$coll'class='div_mes' style='margin-left:50px;'>|$mesf|<h5 class='mess' align='right'><b>|$tel|<br>|$name|<br/>|$date|<br/>|$time|</b></h1><hr size=-1 color=navy align='right' width=90%></div>";
$fp=fopen("./cont/forum.dat","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("$fp", 0644);

$ok=1;
$an="an1";

header('Location: '.$_SERVER['PHP_SELF'].'?coll='.$coll.'#'.$an);
}
$coll=$_GET['coll'];
if(isset($_GET['coll'])){
$dcol="#d_$coll{color:#FF0000;
}"
;
}
$mas=file("./cont/forum.dat");
$mas=array_reverse($mas);
$id=count($mas);
for($j=0; $j<$id; $j++){
$line=explode("|",$mas[$j]);
$cl=count($line);
for($i=0; $i<$cl; $i++){
$lin=$line[$i];
if($i==3){$lin="";}
$li.=$lin;
}
}


$eho1="<style type=\"text/css\">
$dcol
-->
</style>
<div style=
\" width:100%; text-align:center \">
<div class='xx1' onClick='Help()'><b>x</b></div>
<table cellpadding=0 width=400 style=
\"margin-left:30\" cellspacing=0>

<tr>
<td height=60 style=
\"color:#0000FF\"><form name=\"form4\" >Если возникли вопросы или сложности напишите, мы с удовольствием поможем. Можете написать свои отзывы и пожелания.<br>
<textarea style=
\"margin-left:20px;\" name=\"mes\" cols=\"54\" rows=\"7\">
$mes</textarea></p><p>      
Ваше имя:<input style=
\"margin-left:100px;\" name=\"name\" type=\"text\" value=\"$name\">
<input value=
\"Добавить\" type=button onClick=\"PuskH(4)\"></form></p>
<p> </p>
</td>
</tr>
<tr>
<td> </td>
</tr>
</table>


<table cellpadding=0 width=760 cellspacing=0>

<tr>
<td style=
\"text-align:left\">$li</td>
</tr>

</table>
</div>"
;
$eho1= iconv('windows-1251','utf-8',$eho1);
echo $eho1;

?>


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


Продолжу, пока цепть событий не заросла флудом. smile.gif

Так вот, глядя на этот мой первый код, очень хочется (как сказал Razzwan) сортироно пошутить, но не стану, дабы не травмировать нежных ушей. user posted image

Вообще, конечно это вызывает некоторый стыд user posted image хотя понятно, что зря. Ибо у каждого программиста, который достиг определенного результата, в шкафу есть подобный скелет. А если нету, то он либо врет, либо мне его искренне жаль. Так как он пропустил самый интересный и захватывающий этап, когда что-то, сделанное своими руками, оживает и начинает шевелиться. Именно своими руками, а не скопипастенное из многочисленных готовых решений.

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

Первое, что сразу же без ножа режет глаз - полное незнание английского языка. Да, я его практически не знал, вернее знал на уровне "made in China". Причем именно так и читалось - Маде ин Чина В школе и институте я изучал (если так можно сказать) немецкий, в жизни он вообще нафиг был не нужен, ибо тогда не так то просто было поехать путешествовать за рубеж.

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

Вот он, мой залистанный до дыр, гугл-переводчик. smile.gif
Даже закладки сохранились.

Присоединённое изображение
Присоединённое изображение


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


К чему это я. А к тому, что не оставляйте на потом изучение английского. У вас сейчас такие возможности: и в школах преподают, и курсы, и тот же транслэйтер. Пользуйся - нехочу. И вообще это тренд - знать басурманский язык. :) Однако до сих пор в кодах можно встретить нечто похожее:
$mas=array_reverse($mas);
Какой mas... Что это... Массив! Хотя тут же, в названии функции, черным по русскому - array.

А это вообще за пределами понимания:
$mesf.=$mesh[$i];
Что имелось ввиду, я не расскажу даже под пытками. Скорее всего тупо ляпнул, без всякого смысла.

А это не просто некрасиво:
$cl=count($line);

Это неоднозначность. Толи там L, толи единица.

Так вот, чтобы не было так мучительно больно за бесцельно прожитые коды, потратьте немного времени на осмысленные названия. Оно и полезнее будет в изучении языка.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


Итак, что дальше. Пока есть минутка. smile.gif

А дальше кодировка и уровень ошибок. Судя по тому, что нет никакой инициализации, а сайт работал, можно сделать вывод, что нотисы были безбожно подавлены. А с кодировками вообще весело. Для чего было перекодировать входящие данные из рассово верной UTF-8 в местечковую windows-1251? А потом еще и обратно!

Ларчик открывается просто. Эта, с позволения сказать, гостевая книга работала на аяксе. А он, как известно, не любит самодеятельности и работает только с UTF. Но сам скрипт должен был работать на CP1251. Почему так?

А это привет от Денвера. В то время это был единственный самоустанавливающийся локальный сервер. По крайней мере в русском сегменте.

И он по дефолту имел патриотичную кодировку windows-1251 и уровень ошибок E_ALL & ~E_NOTICE (показать все ошибки, кроме нотисов).

Я не знаю, как и чем сейчас дышит Денвер (кстати, нисколько не умаляю его заслуг, очень благодарен Котерову за идею и реализацию), но вместе с тем, тогда он оказал медвежью услугу очень многим начинающим кодерам. Да и до сих пор тут на форуме попадаются вопросы, где и кодировка, и уровень ошибок заданы изначально неверно. С кодировкой вопрос еще двоякий, наш форум допустим работает на 1251. Это обусловлено экономическими соображениями. Хотя и есть некоторые неудобства при интеграции сторонних скриптов. А вот загрублять уровень ошибок, даже на уровне нотисов, при разработке - непростительная халатность.

Так что тем, кто избрал для себя тернистый путь к профессии программиста, совет:

НИКОГДА в девелоперской версии не давите ошибки глобально. Собачку в определенных местах потерпеть можно. Но давить нотисы можно только на продакшене. Это сэкономит неизмеримую кучу времени и нервов.

И второе. Привыкайте к хорошему. UTF-8 на сегодняшний день уже стандарт априори. Использовать местечковые кодировки стоит только в том случае, когда "за" перевешивают "против". А не по дефолту.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


Ну и последнее по коду, на что нужно обратить пристальное внимание новичкам - это стиль кодирования. Привыкнуть писать красиво, это совсем не сложно. А "стильный" код работает гораздо лучше, чем вот такая каша, как у меня. Мистика, но проверено неоднократно. smile.gif

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

Ну а я вернусь к истории.

Как только был запущен первый мой сайт, я тут же возомнил себя охренительным гуру. И соответственно решил монетизировать свои непревзойденные таланты. Зарегистрировался на фрилансе, снабдив "резюме" гордым транспарантом
РАЗРАБОТКА САЙТОВ ЛЮБОЙ СЛОЖНОСТИ!

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

Этот заказ поверг меня в каталептический ступор. Посмотрев код, я в полной мере ощутил свою катастрофическую никчемность и глубину пропасти, отделяющую меня от реального мира программирования.

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

Ну и главное - я решил разобраться со структурой. Для этого скачал исходники форума от Софттайма, купил их же книгу Практика создания web-сайтов и засел за второй круг обучения.

И вот тут я понял, что теория без практики - пшик. Потому что нифига не запоминается, пока руками не пощупаешь. Да и меняется часто. Первый мой сайт был сделан на 4-й версии PHP (тогда она была дефолтной на хостингах да и в Денвере), а вот софттаймовский форум безапелляционно потребовал пятую. А в древней первой моей книге на нё даже намека не было, она писалась еще до выхода пятой версии. Так что нарваться на необъекивные или устаревшие материалы можно было проще простого.

И тогда я избрал тактику активного форумчанина (не на этом форуме, сюда я попал позже). Я не задавал вопросов, я старался на них отвечать. Попутно изучая предмет. Чем хороша такая тактика. На форумах обычно сидит несколько завсегдатаев-фанатиков из разряда гуру. Движут ими разные побуждения: кого ЧСВ, кого скука, кого альтруизм... не суть. Важно то, что ответив на вопрос, можно плучить порцию здоровой критики. Иногда с альтернативными мнениями, перерастающими в холивары. И вот тут то кладезь знаний. Не однобоких, не сомнительных, а выверенных под пристальным вниманием кучи профессионалов.

Я кстати неоднократно советовал и на этом форуме без стеснения использовать такую тактику. И многие её используют и получают профит. Игорь_Vasinsky не даст соврать. smile.gif

Мне крупно повезло (а может время было такое), что тогда на Софттайме не бравировали знаниями ООП и разных паттернов. А действительно помогали разобраться в алгоритмах и тонкостях. Сейчас скучно как то, поверхностно все. Все придумано, 90% кодинга - тупой копипаст. От того наверное и Софттайм уже не столь популярен. По одному-два вопроса в день. Жаль. Раньше они измерялись десятками, Valick подтвердит. smile.gif

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


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


Так вот. Про ООП.

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

Разобраться с этим было тоже не так просто сначала. Первое, как сейчас помню, было сложно понять, что за зверь такой $this->

Казалось, что это что-то запредельно космическое, из другой жизни. Как минимум лунная технология. Оказалось все банально просто (собственно как и всё ООП в итоге). Просто нужно это приземлить, найти простые ассоциации. This переводится с английского как "это". И это (каламбур) вводит в заблуждение. Причем тут "это"... Не понять мне загадочную английскую душу. На мой взгляд уместнее было бы использовать слово here. Вот так куда как понятнее: $here-> То есть "здесь". В этом классе. Может так и подразумевалось, когда использовали слово this, но и словарь и транслэйтер дают четкую формулировку. "ЭТО". "В ЭТОМ" звучит как THEREIN. Так было бы куда прозрачнее. Но оставим это на совести басурман.

Так вот, тем, кто впервые столкнется с классами, мой совет. Переводить this не как "это", а как "здесь". Тогда все становится на свои места. Внутри класса
$здесь->переменная;

То есть вставляем между долларом и переменной указатель на область видимости. Так же и снаружи
$my_class->var;


Дальше еще один нюанс - наследование. Тоже непонятно, в какой больной голове родилась идея обозвать этот механизм "наследованием". Ничего общего с наследством у него нет. И даже переводится extends вовсе не как "наследство" или "наследование". А как "расширение". Что весьма логично и понятно. Наследование, это inheritance. Ну или heritage как минимум, если хочется покороче.

Так вот. Именно такая тупая терминология вводит в заблуждение. Сейчас то конечно понятно (скорее привычно), а вот по первости - полный казус. Какое наследство... Кто помер?

А вот расширение - это ясно-понятно.

Есть класс:
class Example
{
public function method()
{
echo "Я тут";
}
}


Дополняем его другим:
class Ext extends Example
{
    public function otherMethod()
    {
        echo "И я";
    } 
}

и получаем расширенный функционал. И нечего мудрить. :)

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

Классы - изобретение великое и полезное. А принципы ООП - это метастазы. :) Никак они не помогают ни в работе, ни в командном кодинге. Может кому и помогает, но обычно тем, кто не может внутри команды наладить нормальные отношения. И тогда действительно нужна такая плетка, дабы не вольнодумствовали, а ходили строем.

Но это отвлечение. Про себя дальше расскажу. В определенный момент мне показалось мало одного форума. И я зарегался здесь. $this-> :)

Это было, если верить счетчику, 7 лет, 5 месяцев, 28 дней назад. И тогда тут как раз прозвучал призыв собрать команду. Стартап. Организовал какой-то парень, даже звать как не помню. Получилось лихо - человек 200 откликнулось. Он не только здесь собирал. На других форумах, на фрилансах, еще где-то, не знаю. Поставили свой форум и начали тусить. Но, как и 99% стартапов, через месяц это начинание развалилось. Даже название не успели толком придумать. Осталось от этого стартапа 4 человека. Не буду называть, да и они давно не появляются на форуме.

Вот с ними мы придумали название IRBIS. Ирбис, это снежный барс. Очень красивая кошка. Но вообще мы подгадали под это аббривеатуру: Innovative Resource of Business Information Systems

Корявенько конечно, но и фиг с ним. По крайней мере идея жива до сих пор. Хотя отцы-основатели давно разбежались. :) И разосрались мы как раз на почве убеждений. Один предлагал сочинять собственный фреймворк, второй хотел сразу много денег, ну и так далее.

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

Это был очередной этап на пути к профессии. :) Следующий был как раз связан с моим сайтом. Но об этом позже.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1318
Пользователь №: 41686
На форуме: 1 год, 11 месяцев, 16 дней
Карма: 24




Цитата (twin @ 2.04.2016 - 12:56)
И софттаймовский форум, и сайт по книге, написаны фактически в процедурном стиле.

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

Цитата (twin @ 2.04.2016 - 12:56)
А принципы ООП - это метастазы. smile.gif Никак они не помогают ни в работе, ни в командном кодинге.

Не могу себе представить легко расширяемую и слабосвязанную архитектуру без принципов ООП.



--------------------
5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


Цитата (Ron @ 2.04.2016 - 20:19)
Не могу себе представить легко расширяемую и слабосвязанную архитектуру без принципов ООП.

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

Так вот, отцы-основатели команды IRBIS довольно быстро разбежались, но это не значит, что исчезла сама команда. Просто сменились члены. Да и в дальнейшем ротация происходила много раз. У нас был проект-менеджер, который занимался поиском заказов и общением с заказчиками. Великое дело. Он экономил кучу времени и нервов. Параллельно мы совместно обучались. Я накупил и накачал кучу книг, начиная от Котерова, заканчивая всякими Зандстрами и Фаулерами. Получалось довольно весело и эфективно. Мы и денежки зарабатывали, и изучали приемы и технологии программирования.

Заказы были разными. Что-то писалось с нуля. Вот тогда у нас устоялась некоторая основа. Что-то допиливалось готовое. Даже на фреймворках. Первым был CakePHP. Потом CodeIgniter, доводилось разбираться с битриксом. Даже вики-движок ковыряли, был и такой заказ.

Но постепенно уровень ребят рос, и потихоньку все стали находить постоянную работу. Фриланс, даже командой, вещь все же нестабильная. Так что долго мы тоже не продержались. Хотя достаточно серьёзно прокачали скилы.

Устроился на работу и я. Но сайтик оставил для души. Правда из студии он превратился в обучающий ресурс. Интерактивный курс. Писать уроки для него кстати пробовали многие форумчане. Многие и до сих пор получают гонорары. Не стану называть имен, кто захочет - сам скажет.

А вот про работу немного подробнее.

Устроился я в небольшую, но довольно перспективную и богатую контору. До меня там был программист, примерно такой же фанатик ООП, как chee. Но все дело в том, что ООП нужно еще и правильно применять. А тут он накуролесил черти че и сбоку бантик. А так, как посещаемость была очень большой, то самый мощный из возможных на то время дедиков начал валиться по нескольку раз в час. Там даже специального админа наняли, который целый день следил за сервером и ребутил его при падениях. Ситуация выходила из под контроля. Спасти её могла только репликация, либо глубочайшая оптимизация.

Увидев, что он натворил, программист быстренько смылся. Оставив пустой вакансию. Вот на неё я и устроился.

Начав разбираться, в чем же дело, я ужаснулся. Вроде на первый взгляд все по канонам и по новейшим на тот момент технологиям. Но ООП на то и ООП, что там нет никаких канонов. Каждый понимает его по своему. Когда в команде - куда ни шло. Можно выставить рамки, так назывемые корпоративные правила. А когда пишет один программист, его может так занести, что потом только один путь - застрелиться уволиться.

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

Ведь один из принципов ООП - все является объектом. Вот он и сделал объект "user". А сам сайт был похож на социальную сеть. На странице было под сотню анкет. Вот он на каждую анкету и создавал такой объект. Соответственно при формировании такой страницы производилось больше сотни SQL запросов. Хотя с головой хватало одного.

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

Первое - ресурсоемкость снизилась в 20 раз. В двадцать! Не на 20 процентов. Потребление процессора упало до 5 %. На том серваке, который падал от одного сайта, теперь разместили больше десятка, и они работали стабильно.

Второе - за то время, пока я там работаю, я уже четырежды переписывал систему. Не потому, что она плохо спроектирована. Просто постоянно меняются требования, условия и хотелки от начальства. Конкуренты не дремлют, приходится постоянно изменять и наращивать функционал. Первый и последний сайты отличаются как небо и земля. Там вообще почти ничего общего. Ну и на кой мне было мудрить с расширяемостью?

Вот того же саркастичного chee взять для примера. smile.gif Его pet-проект в процессе разработки изменился до неузнаваемости. И будет меняться еще неоднократно. Чем это отличается от того, что написанный под конкретные требования проект не так расширяем, если все равно приходится полностью перелопачивать архитектуру? Ничем. Все равно не добиться полной универсальности, костыли в процессе неизбежны, если архитектуру не менять глобально.

Кроме того, прогресс не стоит на месте. Меняются правила и возможности самого языка. Выходят новые версии, что-то объявляется ошибочным, что-то устаревшим. Загадывать на далекое будущее - это утопия. Гораздо эфективнее эпизодически полностью менять архитектуру, используя зарекомендовавшие себя технологии и безжалостно выкидывая устаревшие. А тут вообще нет никакой разницы, ООП используется или что-то другое.

Ну и очень велика вероятность ошибок, которые допустил мой предшественник по работе. Вот когда тут был батл по методологиям, volter_9 удивлялся, что его поделка использует больше сотни файлов при формировании страницы, а моя не набирала и двух десятков. Я не запускал свистоперделку от chee, но уверен, что там схожая с ним картина. Ибо эти "новейшие технологии" используются без оглядки на ресурсоемкость. А я привык к хайлоад проектам. Потому и так скептически отношусь к этим новомодным тенденциям.

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

Гораздо интереснее система модульная. Да, там чаще используется повторяемость кода. Но чем это плохо? На мой лично взгляд, это даже преимущество. Ведь на много чаще приходится изменять один отдельный модуль, нежели общий функционал. А менять что-то в одном месте для разных концов системы чревато багами. Конечно, есть юнит-тесты, но они не спасают от ошибок. Они помогают их выявлять, и только. Но ведь лучше их не допускать, чем выявлять и править.

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

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

Локально использовать классы и объекты можно и должно. Даже в пределах отдельного модуля (или сервисах) часто применяются некоторые из принципов и шаблонов. Но в общем и целом карпеть над универсальной расширяемой и слабосвязанной архитектурой - пустая трата времени.

Ну и вобщем то и все, дальше ничего особо интересного. Так до сих пор и работаю, правда контора наша сейчас разраслась, одних программистов уже больше десятка. Сайтов больше 500. И все работает, живет и шевелится. Без апломба, спеси и прочего надувания щек по поводу "новейших технологий". smile.gif

Кстати, портфолио у меня нет. Из тех сайтов, которые делались в команде, остался только один. Остальные успешно почили в бозе. smile.gif А после устройства на работу я вообще фриланс забросил за ненадобностью. На работу устраивался на испытательный срок. А после того, как за пару недель глобально исправил положение дел, естественно остался.

Работа мне очень нравится, кроме того, приносит неплохие заработки. Чего и всем искренне желаю. А по какой методологии работать, ООП или нет - выбор лично каждого. Главное, чтобы это не противоречило внутренним убеждениям и не вызывало дискомфорт, как у меня от ООП.

Ведь самая хорошая работа - высоко оплачиваемое хобби. smile.gif


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день




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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (3) [1] 2 3  Закрытая темаСоздание новой темыСоздание опроса