Showing posts with label программизм. Show all posts
Showing posts with label программизм. Show all posts

03 January, 2022

Телескоп James Webb


Телескоп Hubble находится на низкой околоземной орбите ~500 км. Cлетать к нему чтобы что-то починить довольно просто и к нему летали 4 раза (Space Shuttle's).

Телескоп James Webb сейчас летит на место своей работы в точку Лагранжа L2 - гравитационно-стабильная точка в системе Земля-Солнце. L2 находится на 1.500.000 км дальше от Солнца, чем Земля и вращается вокруг Солнца синхронно с Землей. Телескоп будет все время закрыт от солнца тенью земли.

Рабочее место телескопа JWST в 4 раза дальше от Земли чем Луна. Никакое обслуживание не предполагается. Тоже кстати вопрос, почему.
10 000 000 000 долларов, 25 лет работы! 


25 January, 2019

Таланта и предназначения не существует


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

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

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

11 June, 2018

Вопросы для IT-собеседования


  • Вы ранее привлекались за хранение данных в глобальных переменных?
  • Какой результат выполнения команды git push me and then just touch me till I can get my satisfaction, satisfaction?
  • Найдите точку G бинарным поиском
  • Вы когда-нибудь делали dotNet за деньги?
  • Вы способны довести девушку до оргазма языком программирования?
  • В своём резюме вы указали знание php. вам не стыдно?
  • Почему люк скайуокер круглый?
  • Какой из циклов быстрее, for, while или правило буравчика? оО
  • Перед вами кисть, холст и мольберт. напишите компилятор
  • Расскажите что-нибудь про Pascal
  • Как часто вы говорите своему коду «ну пожалуйста.»?
  • У кого был самый длинный код в вашей прошлой команде?
  • Вы моете руки перед правкой кода на продакшне?
  • Вас раньше обвиняли в попытках программирования?
  • Ну признайтесь уже — джаваскрипт алертами дебажили?
  • Можете ли вы провести аналогию между работой на пятилетнем проекте и проктологией?
  • Что, по-вашему мнению, более эффективно: скопипастить код из примеров или убедить заказчика, что ему не нужна эта фича?
  • Если честно, то нас немного смущает тот факт, что вы искали работу программиста через биржу труда…
  • Согласны ли вы что каждый девелопер должен посадить зрение, построить велосипед и вырастить репозиторий?
  • В своем резюме вы указали, что хотели бы поработать на интересном проекте… вы этот проект с собой принесли?
  • Правда ли, что смесь php, css, js, html и sql в одном файле имеет слабительный эффект?
  • Согласны ли вы, что у админа должна быть борода, даже если админ — женщина?
  • Скажите, вы когда-нибудь симулировали ООП?
  • Каким вы видите свой код через пять лет?
  • Xbox, PlayStation или Terminal — какую консоль предпочитаете?
  • Вас когда-нибудь запирали в серверной? За что?
  • 2048 или «Косынка» — в чём вы более успешны?
  • Вы толерантны к копипастам?
  • Цикл, условие, переменная — а какие еще термины из С++ вы знаете, чтобы отказать парню?
  • Цой, Ленин, PHP — что между ними общего?
  • Как объяснить джуниору что пинговать сервера в его возрасте — это нормально?
  • Назовите самое экстремальное место в котором вы занимались багфиксингом
  • Напишите простейшую операционную систему. уложитесь в 140 символов
  • Как вы относитесь к легализации курения мануалов?

30 May, 2018

Абитуриент!

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

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

12 April, 2017

Здравый смысл

Именно к нему апеллируют критики чаще всего. Это же так просто - неужели нельзя до этого додуматься?!
  • В центре негде парковаться → нужно больше парковок.
  • В городе пробки → нужно строить дороги пошире.
  • Иностранцы не могут читать кириллицу → пронумеруем станции метро.
Это были примеры решений, в равной степени очевидных, популярных и тупых.

21 January, 2016

Профессионалка

Что-то захотелось мне взять интервью у девушки легкого поведения. Hо не у тех бездомных гостей северной столицы, что на улице сдаются в аренду по $50, а у настоящую Проститутку Петербурга, профессионала своего дела. Попросил Димку найти мне Такую. Он большой спец в этих делах... Обещал устроить мне интервью электронное, анонимное. Сижу, жду сигнала по аське. А вот и они...
- Добрый вечер!
- Здравствуйте, Руслан! Меня зовут Лера.
- Очень приятно. Hу, а меня можно называть просто аtоs, так короче.
- Хорошо, аtоs.
- Вы согласны рассказать мне немного о Вашей жизни и о своей работе, в частности?

08 October, 2015

Вещи, которые не стоит указывать в резюме и на сообеседовании

  1. История вашей жизни. Всем плевать на вашу летнюю подработку. Ваша цель — включить в резюме только самую важную информацию, которая будет касаться должности, которую вы желаете получить.
  2. Сложное и «грязное» резюме. Документ должен быть простым и чётким, чтобы быстро найти всю важную информацию.
  3. Ваша фотография. В большинстве случаев ваша фотография будет лишней. Если только вас не попросили прислать резюме с фотографией.

17 February, 2015

Как предотвратить застывание и деградацию разума

Вы заметили, что чем старше вы становитесь, тем с меньшей охотой берётесь за ту работу, которая для вас непривычна или связана с большой концентрацией внимания и освоением незнакомых навыков?

Открою вам небольшой секрет. Чтение любимых газет (авторов), работа по хорошо знакомой специальности, использование родного языка и общение с друзьями, которые вас хорошо понимают, посещение любимого ресторана, просмотр любимого сериала… - всё это, так всеми нами любимое, приводит к деградации мозга.

Ваш мозг - ленивая сволочь (как и вы), и поэтому стремится снизить затраты энергии на ту или иную деятельность путём создания своеобразных «макросов» - программ, которые вы выполняете по шаблонам.

17 May, 2014

Как понять, что пора уволиться и двигаться дальше

Edmond Lau, бывший инженер Quora и автор книги о профессиональном росте, поделился собственным опытом и советами о том, как не засиживаться на одном месте, а стремительно и эффективно развиваться в профессиональной сфере. Судя по послужному списку Edmond Lau, у него есть чему поучиться. На его счету работа в таких компаниях как Microsoft и Google, где он сумел взять все самое ценное для своей карьеры и продвинуться вперед. Сейчас он ведет свой блог The Effective Engineer и работает над книгой The Effective Engineer’s Handbook, где изложит основные рецепты того, как ускорить свой карьерный рост, тратить меньше времени на трудоемкие задачи, и как использовать свою энергию и навыки намного эффективней. В своем блоге на Quora он рассказал о том, как можно легко определить, что пора менять работу, чтобы развиваться и двигаться дальше. И мы решили рассказать о его советах.

09 December, 2013

Программист ли я ?

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

25 November, 2013

Что делает хорошего программиста хорошим?

Я работал со многими программистами на протяжении долгих лет - некоторые из них были очень яркими, а некоторые - определенно «никакими». Недавно я имел удовольствие работать с несколькими высококвалифицированными специалистами, так что я потратил немного времени в размышлениях, чем же я восхищаюсь в них. Что делает хорошего программиста таким хорошим, а плохого - таким плохим? Или, немного коверкая русский язык, что делает хорошего программиста хорошим?

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

15 November, 2013

Programmer Evolution

 High School/Jr.High 

10 PRINT "HELLO WORLD"
20 END


 First year in College
program Hello(input, output)
begin
writeln("Hello World")
end.


 Senior year in College
(defun hello
(print
(cons "Hello (list "World))))


 New professional
#include <stdio.h>
void main(void)
{
  char *message[] = {"Hello ", "World"};
  int i;

  for(i = 0; i < 2; ++i)
  printf("%s", message[i]);
  printf("\n");
}



 Seasoned professional
#include <iostream.h>
#include <string.h>

class string
{
private:
int size;
char *ptr;

public:
string() : size(0), ptr(new char("\0")) {}

string(const string &s) : size(s.size)
{
ptr = new char[size + 1];
strcpy(ptr, s.ptr);
}

~string()
{
delete [] ptr;
}

friend ostream &operator <<(ostream &, const string &);
string &operator=(const char *);
};

ostream &operator<<(ostream &stream, const string &s)
{
return(stream << s.ptr);
}

string &string::operator=(const char *chrs)
{
if (this != &chrs)
{
delete [] ptr;
size = strlen(chrs);
ptr = new char[size + 1];
strcpy(ptr, chrs);
}
return(*this);
}

int main()
{
string str;

str = "Hello World";
cout << str << endl;

return(0);
}




 Master Programmer
[
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
]
library LHello
{
// bring in the master library
importlib("actimp.tlb");
importlib("actexp.tlb");

// bring in my interfaces
#include "pshlo.idl"

[
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
]
cotype THello
{
interface IHello;
interface IPersistFile;
};
};

[
exe,
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
]
module CHelloLib
{

// some code related header files
importheader(<windows.h>);
importheader(<ole2.h>);
importheader(<except.hxx>);
importheader("pshlo.h");
importheader("shlo.hxx");
importheader("mycls.hxx");

// needed typelibs
importlib("actimp.tlb");
importlib("actexp.tlb");
importlib("thlo.tlb");

[
uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
aggregatable
]
coclass CHello
{
cotype THello;
};
};


#include "ipfix.hxx"

extern HANDLE hEvent;

class CHello : public CHelloBase
{
public:
IPFIX(CLSID_CHello);

CHello(IUnknown *pUnk);
~CHello();

HRESULT __stdcall PrintSz(LPWSTR pwszString);

private:
static int cObjRef;
};


#include <windows.h>
#include <ole2.h>
#include <stdio.h>
#include <stdlib.h>
#include "thlo.h"
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"

int CHello::cObjRef = 0;

CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
{
cObjRef++;
return;
}

HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
{
printf("%ws\n", pwszString);
return(ResultFromScode(S_OK));
}


CHello::~CHello(void)
{

// when the object count goes to zero, stop the server
cObjRef--;
if( cObjRef == 0 )
PulseEvent(hEvent);

return;
}

#include <windows.h>
#include <ole2.h>
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"

HANDLE hEvent;

int _cdecl main(
int argc,
char * argv[]
) {
ULONG ulRef;
DWORD dwRegistration;
CHelloCF *pCF = new CHelloCF();

hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

// Initialize the OLE libraries
CoInitializeEx(NULL, COINIT_MULTITHREADED);

CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE, &dwRegistration);

// wait on an event to stop
WaitForSingleObject(hEvent, INFINITE);

// revoke and release the class object
CoRevokeClassObject(dwRegistration);
ulRef = pCF->Release();

// Tell OLE we are going away.
CoUninitialize();

return(0); }

extern CLSID CLSID_CHello;
extern UUID LIBID_CHelloLib;

CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
0x2573F891,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};

UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
0x2573F890,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};

#include <windows.h>
#include <ole2.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "pshlo.h"
#include "shlo.hxx"
#include "clsid.h"

int _cdecl main(
int argc,
char * argv[]
) {
HRESULT hRslt;
IHello *pHello;
ULONG ulCnt;
IMoniker * pmk;
WCHAR wcsT[_MAX_PATH];
WCHAR wcsPath[2 * _MAX_PATH];

// get object path
wcsPath[0] = "\0";
wcsT[0] = "\0";
if( argc > 1) {
mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
wcsupr(wcsPath);
}
else {
fprintf(stderr, "Object path must be specified\n");
return(1);
}

// get print string
if(argc > 2)
mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
else
wcscpy(wcsT, L"Hello World");

printf("Linking to object %ws\n", wcsPath);
printf("Text String %ws\n", wcsT);

// Initialize the OLE libraries
hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);

if(SUCCEEDED(hRslt)) {


hRslt = CreateFileMoniker(wcsPath, &pmk);
if(SUCCEEDED(hRslt))
hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);

if(SUCCEEDED(hRslt)) {

// print a string out
pHello->PrintSz(wcsT);

Sleep(2000);
ulCnt = pHello->Release();
}
else
printf("Failure to connect, status: %lx", hRslt);

// Tell OLE we are going away.
CoUninitialize();
}

return(0);
}


 Apprentice Hacker
#!/usr/local/bin/perl
$msg="Hello, world.\n";
if ($#ARGV >= 0) {
while(defined($arg=shift(@ARGV))) {
$outfilename = $arg;
open(FILE, ">" . $outfilename) || die "Can"t write $arg: $!\n";
print (FILE $msg);
close(FILE) || die "Can"t close $arg: $!\n";
}
} else {
print ($msg);
}
1;


 Experienced Hacker
#include <stdio.h>
#define S "Hello, World\n"
main(){exit(printf(S) == strlen(S) ? 0 : 1);}


 Seasoned Hacker
% cc -o a.out ~/src/misc/hw/hw.c
% a.out


 Guru Hacker
% cat
Hello, world.
^D


 New Manager

10 PRINT "HELLO WORLD"
20 END



 Middle Manager
mail -s "Hello, world." bob@b12
Bob, could you please write me a program that prints "Hello,
world."?
I need it by tomorrow.
^D


 Senior Manager
% zmail jim
I need a "Hello, world." program by this afternoon.


 Chief Executive
% letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% damn!
!: Event unrecognized
% logout


P.S.

Недавно понадобилось мне залезть в Visual C++ 5.0 help. И то, что я там увидел переплюнуло даже Master Programmer.

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

13 November, 2013

Правильный Backup

1. Вы бэкапите данные со своей рабочей машины?
2. А с производственных серверов?
3. Вы храните бэкапы на том же диске, или переносите их на другую машину?
4. Переносите ли вы серверные бэкапы в другой дата-центр?

Это стандартный набор вопросов для проверки квалификации системного администратора.

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

10 January, 2013

Краткая история языков программирования

Представляю вашему вниманию вольный перевод юмористической статьи James Iry «A Brief, Incomplete, and Mostly Wrong History of Programming Languages».

1801 — Жозеф Мари Жаккар инструктирет ткацкий станок нанести «Hello World» на гобелен, используя перфокарты. Программисты того времени разочарованы отсутствием хвостовой оптимизации, параллельности и правильного отношения к заглавным буквам.

1842 — Ада Ловлес пишет первую программу. Ее попытки слегка затрудняет отсутствие компьютера, способного запустить ее код. Системные архитекторы позже возродят ее подход, программируя на UML.

1936 — Алан Тьюринг изобретает все языки программирования, которые будут когда-либо придуманы, но британская разведка вербует его под кодом 007 до того как он успеет их все запатентовать.

18 December, 2012

Будь мужиком, пиши правильный код, б***ть

Как вы знаете производительности хорошего программиста и плохого отличается в 28 раз. Чтобы стать хорошим программистом нужно как минимум следовать указанным ниже пунктам.


1. Читай книги, б***ть

Сколько книг по программированию вы прочитали за последний год? Одну? Три? Пять? Это слишком мало. Чтобы стать хорошим программистом надо много читать профессиональной литературы. По книге в месяц будет нормально, нельзя останавливаться, нельзя говорить себе “я уже все знаю, хватить читать”.

22 August, 2012

Как обманывают наивных работников

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

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

1. "Сделайте эту работу со скидкой (или бесплатно), а потом мы вам на следующем заказе это возместим"

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

08 August, 2012

Apple iOS против Google Android - им всем наплевать на тебя

Святая тема для холиваров. Грааль гламурных кис, которые с пеной у рта доказывают свое преимущество над прыщавыми засаленными задротами с последними моделями Samsung или HTC. Вопли ярости гиков, собирающих GCC для Android. Как можно сдержаться и не вбросить по этому поводу? Я, наверное, буду писать очевидные вещи, но, судя по глупым комментариям в интернетах, многим эти прописные истины неясны. Первое и основное заблуждение: Apple делает технику для людей, Google Android - для гиков. ... В реальности и Apple, и Google наплевать на тебя с высокой колокольни, мой милый друг. В основе каждой из этих компаний лежит своя модель продаж, которая абсолютно никак не привязана к куску стекла, железа и пластмассы, который ты так крепко сжимаешь в своих потных ладошках. Вот так новость! Ты купил новый iPhone 4S или четырехядерный, пятибатарейный, десятиэкранный андроидофон, а в глазах компании производителя ты все еще обычный нищеброд. А вот все почему.

22 June, 2012

Жизнь с программистом



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

Все сидела и думала, как начать свой рассказ. Хотела, чтобы было в меру пафосно, с красивым вступлением (о первых ЭВМ, о людях, которые их разработали, о вечных темах, описываемых в мире литературы и кино). Но каждый вариант застревал на второй-третьей строчке. Поэтому, без лишних слов – я живу с программистом.

12 June, 2012

Клавиатурные сокращения, работающие в любом браузере



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

21 April, 2012

Простые математические приемы

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

1. Умножение на 11

Все мы знаем, что при умножении на 10 к числу добавляется 0, а знаете ли вы, что существует такой же простой способ умножения двузначного числа на 11? Вот он:
Возьмите исходное число и представьте промежуток между двумя знаками (в этом примере мы используем число 52):
5_2
Теперь сложите два числа и запишите их по середине:
5_(5+2)_2
Таким образом, ваш ответ: 572.
Если при сложении чисел в скобках получается двузначное число, просто запомните вторую цифру, а единицу прибавьте к первому числу:
9_(9+9)_9
(9+1)_8_9
10_8_9
1089 – Это срабатывает всегда.