Jump to content

HIGH-Zen
 Share

Recommended Posts

Jurkins
(labots)

(Neesmu programmētājs), bet lasu un nesaprotu, kāda velna pēc tā nežēlīgā vēlme pēc stulbajiem makrosiem. Makrosi ir sapisuši avr un stm(mazāk) programmēšanu līdz bezsakaram.

 Kad bez makrosiem ir iespējams iztikt bez kādām problēmām, vēsture (bibliotēkas) bremzē visu efektīvo attīstību 🤣.

Labots - Jurkins
Link to comment
Share on other sites

AndrisBB
(labots)

Ir jau reizes kad ar makrosiem kautkādu problēmu var atrisināt vienkāršāk.

 

Piemēram ja tev to pašu kodu vajag kompilēt ar gcc un clang, tad tev var būt MCU kurš ir big endian, cits little endian. Tad pa vidam vēl tam kodam jākompilējas uz ARM un Risc-V utt. Kautkādam produktam kautkas ir savādāk.

Nu pieņemsim kā te. Tu gribi Queue izmērus iestatīt kompilēšanas laikā. utt.

Protams daļu no tā visa var atrisināt ar constexpr utt 

 

#if !(defined(__LINT__))
#define NRF_BLE_GQ_CUSTOM_DEF(_name, _max_connections, _queue_size, _pool_elem_size, _pool_elem_count) \
    static uint16_t CONCAT_2(_name, conn_handles_arr)[] =                                              \
    {                                                                                                  \
        MACRO_REPEAT(_max_connections, NRF_BLE_GQ_CONN_HANDLE_INIT)                                    \
    };                                                                                                 \
    STATIC_ASSERT(ARRAY_SIZE(CONCAT_2(_name, conn_handles_arr)) == (_max_connections));                \
    NRF_QUEUE_ARRAY_DEF(nrf_ble_gq_req_t, CONCAT_2(_name, req_queue), _queue_size,                     \
                        NRF_QUEUE_MODE_NO_OVERFLOW, _max_connections);                                 \
    NRF_QUEUE_DEF(uint16_t, CONCAT_2(_name, purge_queue), _max_connections,                            \
                  NRF_QUEUE_MODE_NO_OVERFLOW);                                                         \
    NRF_MEMOBJ_POOL_DEF(CONCAT_2(_name, pool), _pool_elem_size, _pool_elem_count);                     \
    static nrf_ble_gq_t _name =                                                                        \
    {                                                                                                  \
        .max_conns      = (_max_connections),                                                          \
        .p_conn_handles = CONCAT_2(_name, conn_handles_arr),                                           \
        .p_req_queue    = CONCAT_2(_name, req_queue),                                                  \
        .p_purge_queue  = &CONCAT_2(_name, purge_queue),                                               \
        .p_data_pool    = &CONCAT_2(_name, pool)                                                       \
    };                                                                                                 \
    NRF_SDH_BLE_OBSERVER(_name ## _obs,                                                                \
                         NRF_BLE_GQ_BLE_OBSERVER_PRIO,                                                 \
                         nrf_ble_gq_on_ble_evt, &_name)
#else
#define NRF_BLE_GQ_CUSTOM_DEF(_name, _max_connections, _queue_size, _pool_elem_size, _pool_elem_count) \
    static nrf_ble_gq_t _name;
#endif // !(defined(__LINT__))

 

Labots - AndrisBB
  • Atbalstu 1
Link to comment
Share on other sites

AndrisBB
(labots)

 

Protams gandrīz katra no tām rindām ir cits makro 😂

 

#if !(defined(__LINT__))
#define NRF_QUEUE_ARRAY_DEF(_type, _name, _size, _mode, _num)                                 \
    MACRO_REPEAT_FOR(_num, NRF_QUEUE_ARRAY_INSTANCE_ELEMS_DEC, _type, _name, _size, _mode)    \
    static const nrf_queue_t _name[] =                                                        \
        {                                                                                     \
            MACRO_REPEAT_FOR(_num, NRF_QUEUE_ARRAY_INSTANCE_INIT, _type, _name, _size, _mode) \
        };                                                                                    \
    STATIC_ASSERT(ARRAY_SIZE(_name) == _num)
#else
#define NRF_QUEUE_ARRAY_DEF(_type, _name, _size, _mode, _num) \
    static const nrf_queue_t _name[_num];
#endif // !(defined(__LINT__))

..................
  
#define NRF_QUEUE_DEF(_type, _name, _size, _mode)                                        \
    static _type             CONCAT_2(_name, _nrf_queue_buffer[(_size) + 1]);            \
    static nrf_queue_cb_t    CONCAT_2(_name, _nrf_queue_cb);                             \
    NRF_LOG_INSTANCE_REGISTER(NRF_QUEUE_LOG_NAME, _name,                                 \
                                  NRF_QUEUE_CONFIG_INFO_COLOR,                           \
                                  NRF_QUEUE_CONFIG_DEBUG_COLOR,                          \
                                  NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL,                \
                                  NRF_QUEUE_CONFIG_LOG_ENABLED ?                         \
                                    NRF_QUEUE_CONFIG_LOG_LEVEL : NRF_LOG_SEVERITY_NONE); \
     NRF_SECTION_ITEM_REGISTER(nrf_queue, const nrf_queue_t  _name) =                    \
        {                                                                                \
            .p_cb           = &CONCAT_2(_name, _nrf_queue_cb),                           \
            .p_buffer       = CONCAT_2(_name,_nrf_queue_buffer),                         \
            .size           = (_size),                                                   \
            .element_size   = sizeof(_type),                                             \
            .mode           = _mode,                                                     \
            __NRF_QUEUE_ASSIGN_POOL_NAME(_name)                                          \
            NRF_LOG_INSTANCE_PTR_INIT(p_log, NRF_QUEUE_LOG_NAME, _name)                  \
        }


..................


#define NRF_SDH_BLE_OBSERVERS(_name, _prio, _handler, _context, _cnt)                                    \
STATIC_ASSERT(NRF_SDH_BLE_ENABLED, "NRF_SDH_BLE_ENABLED not set!");                                      \
STATIC_ASSERT(_prio < NRF_SDH_BLE_OBSERVER_PRIO_LEVELS, "Priority level unavailable.");                  \
NRF_SECTION_SET_ITEM_REGISTER(sdh_ble_observers, _prio, static nrf_sdh_ble_evt_observer_t _name[_cnt]) = \
{                                                                                                        \
    MACRO_REPEAT_FOR(_cnt, HANDLER_SET, _handler, _context)                                              \
}

#if !(defined(DOXYGEN))
#define HANDLER_SET(_idx, _handler, _context)                                                       \
{                                                                                                   \
    .handler   = _handler,                                                                          \
    .p_context = _context[_idx],                                                                    \
},
#endif

 

 

Un tā tur var bezgalīgi

Labots - AndrisBB
  • Atbalstu 1
Link to comment
Share on other sites

Jurkins

Un tad vienā brīdī izrādās, ka pie kaut kādiem sākuma noteikumiem makross, kurā ir vēl 500 makrosi viens aiz otra, nogļuko un NASA Mēness zonde aizlido uz Plutonu.

  • Atbalstu 1
Link to comment
Share on other sites

AndrisBB
(labots)

Es jau nesaku ka tas tāds labākais kods, tik to ka tādi eksistē.

Skat šitas no NRF (Nordic Semi) Bluetooth staka. Tie NRF čipi ir visur, diezgan populāri. Makrosa dēļ kād medicīniskais devaiss var sajukt.

 

Vienkārši nesen debugoju to kodu, tapēc bij vēl svaigs atmiņā.

 

 

Vienkārši pameklējot ar regexu #define .*\(.*\).*\\, visādus interesantus var atrast 😂 

Labots - AndrisBB
Link to comment
Share on other sites

HIGH-Zen

@binary paldies, ja tev nebija ko parādīt,

tad @AndrisBB jau ielika pietiekoši interesantus makrosu piemērus.

Es tiešām ar tādiem advancētiem makrosiem nebiju saskāries. :)

Ļoti interesanti.

Link to comment
Share on other sites

  • 2 weeks later...
HIGH-Zen
(labots)
29.02.2024. , 18:37, AndrisBB teica:

Pats tak ieliki linku uz universitātes kursu, 4 nedēļas tas kurss.

Izrādās, ka tas kurss ir knaps ievads LISPā. Neko daudz tas nedeva.

 

"On LISP" grāmata, ko izlasīju, bija nedaudz par sarežģītu iesācējam. Šo to iemācījos, bet tas arī viss.

 

Tagad ķeršos klāt - Paul Graham "ANSI Common Lisp".

Labots - HIGH-Zen
Link to comment
Share on other sites

AndrisBB

Parasti lasot grāmatas tāpat neko nevar iemācīties, izņemot kautkādus dažus random faktus.

Labākais veids kā mācīties ir darot. Pabeidz to Uni kursu un sāc taisīt kautko kas vairāk par 10 koda rindām.

 

Link to comment
Share on other sites

HIGH-Zen
(labots)
Pirms 54 minūtēm , AndrisBB teica:

Labākais veids kā mācīties ir darot.

Tur es tev piekrītu. Mana pieeja ir lasīt labu grāmatu un paralēli darīt.

 

Edit:

Kā piemēru varu minēt pat tādus sīkumus, kā "cond" sintaksi:

; Set value1 to 500
(setq val1 500)

; Check whether val1 is greater than 200
(cond
  ((> val1 200) (format t "Greater than 200"))
  (t (format t "Less than 200")))

Man sākumā nebija ne jausmas, kāpēc salīdzināšanas vietā aiz (> val1 200) ir t. Vienā no grāmatām bija sīkāk izskaidrots, kāpēc tur liek t. Šajā piemērā tas darbojas līdzīgi kā "else".

 

Labots - HIGH-Zen
Link to comment
Share on other sites

HIGH-Zen
6.01.2024. , 00:43, AndrisBB teica:

Tā ju ir, kā iemācīsies Lisp un uzinstalēs eMacs, tā būs spicākais koders ciemā un atrisinās visas sarežģītākās problēmas 😂

Tieši tā, lai programmētu LISPā Emacs ir must have. Kā arī priekš SBCL - SLIME vai SLY.

 

Par Emacs ir labs citāts:

Citēt

...

To me, it means that for a while everything feels normal or at worst quite difficult and maybe slightly boring, ugly and anti-ergonomic. But then you get it and Emacs starts to be so powerful that you will miss it everytime you have to edit text somewhere.

...

Reddit.

Tieši tā arī ir, jāpadarbojas ilgāku laiku un tad pēkšņi - gatavs, viss ir skaidrs un taustiņu kombinācijas liekas sakarīgas.

 

Labi pastāstīts par to, kas ir Emacs, ir šeit (pirmās 5-10 min):

 

Link to comment
Share on other sites

  • 4 weeks later...
HIGH-Zen

Nekā īpaši jauna nav. Lasu Paul Graham "ANSI Common Lisp".

Emacs problēma ir tā, ka to sāc saprast aptuveni pēc pusgada lietošanas. Tas atšķirībā no Notepad++, VS Code, VIM, kuros ir jāpabakstās kādas 5 minūtes līdz pusotrai stundai, lai varētu jau raiti darboties.

Link to comment
Share on other sites

binary
pirms 2 stundām , HIGH-Zen teica:

Tas atšķirībā no Notepad++, VS Code, VIM, kuros ir jāpabakstās kādas 5 minūtes līdz pusotrai stundai, lai varētu jau raiti darboties.

Atļaušos nepiekrist. Jebkurā no viņiem pēc 5min var rakstīt apmēram tikpat raiti kā "parastajā" MS Notepad (vai max kā Notepad2) - to nu nekādi nevar nosaukt par "raitu darbošanos". Tas, protams, pieņemot, ka kādā citā līdzīgā redaktorā/idē nav uztrenēta automātika.

 

Piemēram, kaut vai tas pats "column selection" katrā redaktorā/idē ir realizēti citādi. Fīča, ko lietoju diezgan bieži un, domājams, diezgan veikli. Esmu pieradis pie tā, kā tas realizēts Notepad++ - kā tiek iezīmēts, kas tiek iezīmēts, kas tiek labots tādā vai citādā gadījumā (vēl apvienojumā ar "trim trailing spaces and save") utt. Kad kaut ko līdzīgu esmu mēģinājis darīt VS Code, tad nekas tur nesanāca - it kā fīča ar līdzīgu nosaukumu ir, bet praksē realizācija ir pilnīgi atšķirīga un nav raiti lietojama ne "pēc 5 minūšu pabakstīšanās", nedz arī pēc pāris nedēļu pabakstīšanās. Nu gluži vienkārši nav iespējams izdarīt to, ko varēju ar Notepad++.

 

Protams, ja "raiti darboties" nozīmē uzrakstīt 10 simbolus minūtē un pāriet uz nākamo rindu, tad cita runa…

Link to comment
Share on other sites

AndrisBB
(labots)

Tāpat jau lielākā daļa laika paiet kodu lasot, cik tad tu daudz koda uzraksti pa dienu?

10 rindas?

 

 

[offtopiks]

Starpcitu, reku viens no labāk noformētajiem darba piedāvājumiem, kāds pēdējā redzēts. 

https://freeflysystems.com/careers/clprgjz4u0uj7oka73jtm56e6

 

Kautkā patīk tā 'We need your help to answer the following questions and many more' sadaļa. 

Dod iespēju kandidātiem aizdomāties par jautājumiem, kuri visdrīzāk tiks izrunāti intervijā. Pats kandidāts var uzreiz izlemt vai ir kautkas sakāms par tēmu vai nav.

[/offstopiks]

Labots - AndrisBB
Link to comment
Share on other sites

HIGH-Zen

@binary Emacs tiek ar to galā (nekustinot peli) :) Bet pieļauju, ka tās tomēr ir advancētākas fīčas, kuras citos redaktoros nav. Pamata lietas C-c C-v utml. tajos darbojas vienādi, labi izņēmums ir VIM, tur vajadzēs to pusotru stundu apgūt pamata lietas.

column selection
Notepad++:
Alt + mouse

 

Emacs:
C-x <SPC> = rectangle-mark-mode
select rectangle
C-t
insert some text
hit <Return> key

 

Ir komandas ar kurām var izgriezt iezīmēto kvadrātu, kopēt, dzēst pavisam vai aizvietot ar whitespace.

Ja papildus nepieciešami vairāki counter-i, tad to var realizēt ar makrosiem un reģistriem (Registers), kuri var būt gan pieaugoši, gan samazinoši ar noteiktu soli. Un praktiski neierobežots skaits, kaut vai 10 dažādi skaitļi.
Ja vajadzīgs tikai viens pieaugošs counter-is, tad pietiek ar makrosa iespējām.

 

trim trailing spaces and save

By default, Emacs quietly deletes trailing whitespaces once the user moves on to the next line.

Esošajam dokumentam: Type M-x delete-trailing-whitespace to delete all trailing whitespace.
C-x C-s = Save

 

Link to comment
Share on other sites

AndrisBB
(labots)

Tak vienreiz jau te tika apspriesta tā 'column selection'.

Nekas īpaš jau tur nav, pieejams faktiski jebkurā editorā, ieskaitot pieminētajā VS Code, tik tas ka mazliet savādāk kā iekš Notepad++.

Strādā perfekti ar SHIFT + CTRL + UP/DOWN iekš VS Code.

Pamēģināju uz Notepad++, tur ar SHIFT + ALT + UP/DOWN.

Nekādu atšķirību neredzu.

 

Plus ja jau baigi vajag, tad var pieinstalēt Notepad++ extenšenu un šortcati būs tieši tādi paši.

(kā parasti saka - sliktam dejotājam olas traucē, tad arī piesienas sīkumiem)

Labots - AndrisBB
Link to comment
Share on other sites

binary
1 stundu atpakaļ, HIGH-Zen teica:

Bet pieļauju, ka tās tomēr ir advancētākas fīčas, kuras citos redaktoros nav. Pamata lietas C-c C-v utml. tajos darbojas vienādi, labi izņēmums ir VIM, tur vajadzēs to pusotru stundu apgūt pamata lietas.

Nu tāpēc jau rakstu, ka pēc tās "5 minūšu pabakstīšanās" to visu var "apgūt" apmēram Notepad līmenī. Pakustināt kursoru, iezīmēt tekstu, pārkopēt tekstu no vienas vietas uz citu - priekš tā advancētu editoru nevajag. Lai varētu raiti lietot jebko advancētāku (tieši tam taču arī vajag visādus emacus, vscode, notepad++ u.c., vai ne?), ar 5min nepietiek, tur tomēr vajag vismaz mēnešus, lai editors kļūtu par "daļu no lietotāja" - lai jebkuru nepieciešamo darbību varētu izdarīt bez jebkādas domāšanas tad, kad to vajag.

 

1 stundu atpakaļ, HIGH-Zen teica:

@binary Emacs tiek ar to galā (nekustinot peli) :)

Palasi vēlreiz, varbūt sapratīsi. Uzsvars uz "katrā redaktorā/idē ir realizēti citādi".

Šodien kā reiz pamēģināju, kā tas emacsā realizēts - nu apmēram tas pats, kas operēt savas mandeles caur kaimiņa mājas durvju atslēgas caurumu. Izdarīt, protams, var, bet nu… :)

Kolēģis, kurš gadiem (gadu desmitiem?) ilgi lieto Emacs un fano tikai un vienīgi par "melno ekrānu", reizēm par manām darbībām ar Notepad++ var vien noteikt "oho, šitais arī ir iespējams?!" Atliek vien saprast, joko vai nē.

 

1 stundu atpakaļ, HIGH-Zen teica:

column selection
Notepad++:
Alt + mouse

Protams, Notepad++ to var darīt arī ar peli. Reizēm tas nudien ir ērtāk - tad, kad kaut kādās rindās vajag tikt ārpus teksta robežām. Bet tikpat labi to var darīt arī bez peles palīdzības. Ja tu būtu lietojis (un kaut nedaudz apguvis) Notepad++, tad ļoti labi zinātu, kā to dara, nevis rakstījis kaut ko par peli kā par vienīgo variantu ;) Bet nu ja galvā fanātisms iesēdies, tad ko nu tur daudz runāt…

 

1 stundu atpakaļ, HIGH-Zen teica:

Emacs:
C-x <SPC> = rectangle-mark-mode
select rectangle
C-t
insert some text
hit <Return> key

Nu lūk, te arī ir tas "the greatest failure of them all" - tas, ka jāpārslēdzas uz kaut kādu "rectangle mark mode". Visos editoros, kur ar kaut kādiem shortcutiem ir speciāli jāieslēdz/jāizslēdz to modi, tā fīča ir grūti lietojama. Tur tā ir kā kaut kāda "advancēta papildus fīča", "cits režīms", nevis daļa no standarta darbībām. Nu tāda vismaz ir mana pieredze.

 

pirms 1 stundas , AndrisBB teica:

Tāpat jau lielākā daļa laika paiet kodu lasot, cik tad tu daudz koda uzraksti pa dienu?

10 rindas?

Atkarīgs no konkrētā darba specifikas. Ja projekts jau gatavs, tad, protams, nekas daudz nav uzrakstāms. Ja jāraksta jaunu projektu vai jaunu fīču esošam projektam, vai vienkārši jāveic kaut kādu nopietnāku refactoringu, tad reizēm gadās arī pāris simtus dienā uzrakstīt, izdzēst, izmainīt. Un tas ir tikai "paliekošais rezultāts", nevis visas dienas darbs (t.i., visi tie simti rindu, kas tika rakstīti un dzēsti dienas gaitā) - ja vēl to paskatītu, būtu vēl vairāk.

 

Pirms 58 minūtēm , AndrisBB teica:

Strādā perfekti ar SHIFT + CTRL + UP/DOWN iekš VS Code.

Pamēģināju uz Notepad++, tur ar SHIFT + ALT + UP/DOWN.

Nekādu atšķirību neredzu.

Nu apmēram tas pats, kas braukt ar pērnā gada Audi vai pērnā gadsimta moskviču - abiem ir gāzes pedāļi, abiem ir stūres, abiem ir pa četriem riteņiem, tātad priekš tevis atšķirības nav ;)

Atšķirību neredzi tāpēc, ka vai nu tu ikdienā to fīču nelieto, vai arī lieto ierobežotām vajadzībām. Bet nu ja tev visa diena paiet meetingos un dienā max 10 rindas jāuzraksta, tad ir piedodami.

1 stundu atpakaļ, AndrisBB teica:

Plus ja jau baigi vajag, tad var pieinstalēt Notepad++ extenšenu un šortcati būs tieši tādi paši.

Ta' ne jau par shortcutiem ir runa, bet par to, kā tā fīča realizēta. Precīzi nepateikšu, sen tas bija, bet gan jau atšķīrās, kā strādāja rindu beigās un/vai ārpus rindas robežām.

Link to comment
Share on other sites

AndrisBB
Pirms 2 minūtēm , binary teica:

Atšķirību neredzi tāpēc, ka vai nu tu ikdienā to fīču nelieto, vai arī lieto ierobežotām vajadzībām.

Kapēc lai nelietotu? Lietoju.

Tik tas ka šortcuti mazliet citi, tik vien visa atšķirība.

Kautkā vairāk izklausās ka esi ieciklējies uz vienu editoru un tas ir vienīgais pareizais.

Tas tas pats kas pārejot no Linux uz MacOS, no sākuma besīgi, ka šortcuti citi. Pāris mēnešus palieto, piešaujas un tad atkal pirmie liekas ačgārni.

Link to comment
Share on other sites

binary
(labots)
Pirms 19 minūtēm , AndrisBB teica:

Kapēc lai nelietotu? Lietoju.

Kāpēc lai lietotu, ja vairāk par 10 rindām koda dienā nesanāk? :D

 

Pirms 19 minūtēm , AndrisBB teica:

Tik tas ka šortcuti mazliet citi, tik vien visa atšķirība.

Nu nav vienīgā. Ja es, atverot Visual Studio Code, tīri tehniski nevaru izdarīt to, ko varu ar Notepad++, tad atšķirība ir krietni lielāka nekā "mazliet citi šortcuti".

 

column-select.gif 

Nu te, piemēram, kursors nostājas katras rindas beigās. Notepad++ kursors nostāsies vienā kolonnā visās rindās. Kad vajag fiksi kaut kādu alignmentu saveidot (teiksim, sarakstīt kaudzei parametru komentārus rindas beigās), tad šitais VS Code variants ir gaužām neērts un prasa virkni papildus darbību, ar Notepad++ sanāk krietni ērtāk/ātrāk.

 

Pirms 19 minūtēm , AndrisBB teica:

Kautkā vairāk izklausās ka esi ieciklējies uz vienu editoru un tas ir vienīgais pareizais.

Te viens lispa fanāts drīzāk ir ieciklējies uz vienu, kuru uzskata par vienīgo pareizo. Tas nekas, ka viedokli veidojis nevis reāli strādājot ar vienu, otru, trešo produktu, bet skatoties youtubē vecu krabju-fanātu intervijas.

 

Manis pēc, jebkurš var lietot to, kas pašam patīk - katram savi plusi, savi mīnusi. Nav tāda "vienīgā pareizā" - tāds tituls nederēs ne manis lietotājam, ne kādam citam. Es pat teiktu, ka Notepad++ ir virkne fīču, kuru man pietrūkst no agrāk lietotām IDE'ēm, bet nu no teksta/koda redaktorā gaidīt pilnvērtīgas IDE's fīčas - tas būtu muļķīgi. Par VS Code atceros, ka tas column selection bija neērts (gan jāatzīst, ka ne tik neērts kā tajos rīkos, kur ir "jāieslēdz column selection modi") un bija kaut kāds pārspīlēts fontu antialiasings, no kura nevarēja tikt vaļā (viss kods pārāk miglains). Nebūtu tās miglas, būtu centies tomēr viņu labāk apgūt…

Labots - binary
Link to comment
Share on other sites

AndrisBB
Pirms 1 minūtes , binary teica:

Kāpēc lai lietotu, ja vairāk par 10 rindām koda dienā nesanāk? :D

 

Varbūt vienkārši atveru teksta editoru un spēlējos 

  • Haha 1
Link to comment
Share on other sites

HIGH-Zen
Pirms 23 minūtēm , binary teica:

Šodien kā reiz pamēģināju, kā tas emacsā realizēts - nu apmēram tas pats, kas operēt savas mandeles caur kaimiņa mājas durvju atslēgas caurumu. Izdarīt, protams, var, bet nu… :)

Tu vienkārši neesi vēl piešāvies. Galvenais ir sākt. :D

 

Pirms 6 minūtēm , binary teica:

Te viens lispa fanāts drīzāk ir ieciklējies uz vienu, kuru uzskata par vienīgo pareizo. Tas nekas, ka viedokli veidojis nevis reāli strādājot ar vienu, otru, trešo produktu, bet skatoties youtubē vecu krabju-fanātu intervijas.

Viss sākās ar

20.12.2023. , 16:50, HIGH-Zen teica:

Tātad. Redzesloka paplašināšanai esmu nolēmis apgūt LISP

Ne nu fanāts ne nu kā.

Ar NPP esmu darbojies, ir noderējis, ja fiksi vajag atraut kādu failu un palabot, bet tas arī viss. Vienīgā reize bija kaut kad sen NPP izmantoju kā IDE priekš BCX Basic sakrāmēju smukas kompilēšanas podziņas toolbar-ā ar NPP Exec pluginu.

 

Emacs man patīk tāpēc, ka to var darbināt drukājot ar visiem 10 pirkstiem, nekādas peles, ne bultiņas, ar NPP tā nevar (varbūt es nezinu kā? pāriet rindas sākumā, beigās? neatraujot pirkstus no asdf jkl;). Pirmo reizi redzu cilvēku, kas dzied tādas slavas dziesmas Notepad++. :)

 

Link to comment
Share on other sites

AndrisBB
(labots)
1 stundu atpakaļ, binary teica:

Nu te, piemēram, kursors nostājas katras rindas beigās.

Es ar peli parasti kolonas neiezīmēju, tapēc nezinu risinājumu, bet nu ņemot vērā ka tas ir javascripts, tad nebūtu īpaši grūti uzrakstīt custom actionu.

 

Bet ar klaviatūru es parasti SHIFT+CMD+UP/DOWN, lai iezīmētu multi kolonas verikāli. Tad taspats SHIFT + CMD + RIGHT līdz beigām (Vai ar ALT pa vienai vienībai) un tad SHIFT + CMD + | , lai 'iztaisnotu' kursoru kā tev patīk. 

SHIFT + CMD + | man vienkārši shortcuts uz CursorAlign (100 un viens exstenšions ir lai to izdarītu).

 

Bet nu var jau abus apvienot vienā, tā ka SHIFT + CMD + RIGHT nevis aizies līdz katras rindas beigām, bet izdarīs tā ka kolonas kursors ir vertikāli.

 

    {   
        "key": "shift+cmd+right",
        "multicommand": ["cursorColumnSelectRight", "yo1dog.cursor-align.alignCursors"],
        "when": "editorTextFocus" 
    },

 

 

 

 

Labots - AndrisBB
Link to comment
Share on other sites

binary
Pirms 2 minūtēm , HIGH-Zen teica:

Emacs man patīk tāpēc, ka to var darbināt drukājot ar visiem 10 pirkstiem, nekādas peles, ne bultiņas, ar NPP tā nevar (varbūt es nezinu kā? pāriet rindas sākumā, beigās? neatraujot pirkstus no asdf jkl;).

Nu… Man šķita, ka IT jomā strādājošie nebaidās atraut pirkstus no home row. Pogas Home un End neviens nav atcēlis, tās lieliski darbojas arī Notepad++. Un visu var izdarīt arī bez peles. Cik ērti - tas jau ir cits jautājums, reizēm kaut kādas lietas ērtāk izdarīt ar peli (ja editors to prot).

 

Ja nu ļoti vajag, tad Notepad++ shortcutus var salikt pēc paša izvēles:

image.png.735187e4ec58e490695a2bca0b456cfe.png

 

Defaultā "home" poga izpilda SCI_VCHOMEWRAP komandu, "end" poga - SCI_LINEENDWRAP. Spaidot home pogu, kursors lēkā starp rindas sākumu un koda sākumu (ja kods ir ar atkāpi). Vari to pārvietošanos uz rindas sākumu (SCI_END vai SCI_VCHOMEWRAP) uzlikt arī uz jebkuru citu pogu/shortcutu.

 

Notepad++ ir būvēts uz Scintilla bāzes, no turienes komandām ir tas "SCI_" prefikss.

 

Pirms 15 minūtēm , HIGH-Zen teica:

Pirmo reizi redzu cilvēku, kas dzied tādas slavas dziesmas Notepad++. :)

Neesi meklējis ;) "Par dzīvi Latvijā" topikā tak laikam vēl @rubb, šķiet, izteicās par labu pieredzi ar Notepad++.

 

Ja paskatās globālā mērogā (googlē, nevis vietējā forumā), tad Notepad++ ir/bija viens no populārākajiem rīkiem koda rakstīšanai - mazs, ātrs, ērts, funkcionāls. Un pat nevajag nekādu baiso konfigurēšanu un pluginu meklēšanu - uzinstalē, sakonfigurē koda indentāciju pēc patikas un lieto. Ar normālu IDE (vai kaut vai to pašu VS Code), protams, salīdzināt nevar, bet visādiem "sīkumiem" (hardcore gadījumā - arī lielākiem projektiem) ir tieši laikā.

Bet nu kā popularitāti samazinošs faktors - pieejams tikai uz Windows (un ne "melnajā logā", t.i., konsolē). Esmu mēģinājis laist uz Linux caur wine - pavisam cita (daudz sliktāka) pieredze… Sen tas bija, neatceros, kas par vainu - varbūt vienkārši bremzēja (ja piespiežu pogu un līdz softa reakcijai jāgaida ilgāk par brīdi, kad poga ir atlaista, tātad rīks ir neleitojama bremze :D). Ja vajadzētu kaut ko uz Linux, tad laikam tomēr mēģinātu apgūt ko citu.

 

Emacs, šķiet, populārāks veco hardcore krabju vidū un/vai varbūt kaut kādās "ne Windows" vidēs.

 

VS Code, cik noprotu, lieliski aizpilda spraugu starp "text/code editor" un "fully featured IDE" - pieejams bez maksas, prot daudzas valodas, prot daudzas IDE fīčas. Ne velti ātri kļuva populārs.

 

Es pats Notepad++ lietoju, šķiet, gadus 15, varbūt vairāk. Turklāt vienmēr esmu bijis "Windows guy". Kā pirmais bija koda editors Notepad (jā jā, tas pats Microsoft Notepad :D), pēc tam Notepad2 un PSPad, pēc tam "atklāju" Notepad++. Kaut kādos dzīves posmos tas ir bijis kā galvenais darba rīks, citos - kā palīgrīks, jo galvenais rīks bijis kāda nopietnāka IDE, kā Visual Studio (tas, kas īstais, nevis Visual Studio Code; toreiz VS Code vēl neeksistēja), NetBeans vai Eclipse.

Link to comment
Share on other sites

binary
Just now, AndrisBB teica:

Es ar peli parasti kolonas neiezīmēju, tapēc nezinu risinājumu, bet nu ņemot vērā ka tas ir javascripts, tad nebūtu īpaši grūti uzrakstīt custom actionu.

Nu vot, sākās…

Tad jau ņemam Notepad++ sourci un implementējam visu, ko sirds kāro :D Pat nebūs jāmokās ar javascriptu :D

Bet ar peli tur nav it nekāda sakara. To visu Notepad++ var darīt arī ar klavieri.

 

Pirms 3 minūtēm , AndrisBB teica:

un tad SHIFT+CMD+ | , lai 'iztaisnotu' kursoru kā tev patīk. 

Pirmajā rindā - 20 simboli

Otrajā rindā - 10 simboli

VS Code defaultā tas "colum selection" rindas galā noliks kursoru pēc 20. simbola pirmajā rindā un pēc 10. simbola otrajā rindā. Pareizi?

Pēc SHIFT+CMD+| kursors abās rindās būs pēc 20. simbola?

 

Ja pareizi sapratu un tas tā strādā, tad principā ideāls risinājums. Daudz labāk nekā Notepad++ defaultais risinājums.

 

Pirms 5 minūtēm , AndrisBB teica:

100 un viens exstenšions ir lai to izdarītu

Un šī nu ir lieta, kas besī - tas, ka darbarīku vajag "pielāgot", lai tas būtu lietojams :D Nu apmēram tas pats, kas paņemt zāģi, bleķa ripu un no tās bleķa ripas vispirms mēģināt uztaisīt normālu zāģa ripu ar karbīda zobiem, lai to varētu lietot. Nēnu nav jau, protams, slikti, ka ir tāda iespēja…

 

Baterija iet uz beigām, atslēdzos no diskusijas :D Un gaidu, kas sagaida nākotnē - kaut kad vajadzēs pamācīties ko jaunu. Tik jācer, ka tas nebūs lisp :D

Link to comment
Share on other sites

HIGH-Zen
Pirms 53 minūtēm , binary teica:

vajadzēs pamācīties ko jaunu. Tik jācer, ka tas nebūs lisp :D

būs būs, 100%!

Link to comment
Share on other sites

AndrisBB
(labots)
1 stundu atpakaļ, binary teica:

Pēc SHIFT+CMD+| kursors abās rindās būs pēc 20. simbola?

Tā arī būs, tā arī visa jēga tam actiona. Nav jau pasaules lielākā problēma saskatīt cik simboli no kursora sākuma līdz garākas rindās beigām un pielikt atstarpes un aizbaidīt kursoru uz beigām.

1 stundu atpakaļ, binary teica:

Un šī nu ir lieta, kas besī - tas, ka darbarīku vajag "pielāgot", lai tas būtu lietojams

Ko darīsi ka tas editirs ir tik populārs, katram lietotājam neizdabasi, acīmredzot lielākajai daļai labāk patīk tā kā ir.

Tāpēc jau viņš ir tik vienkārši pielāgojams, katrs var uztaisīt ka labāk patīk.

Labots - AndrisBB
  • Patīk 1
Link to comment
Share on other sites

Jurkins
(labots)

Kāda starpība ar kādu "notepadu" programmeris uztaisa sūdainu kodu?

Cik noprotu, tad krutie linuksisti onanē ar savu vim, bet (lai cik skumji nebūtu, es esmu tikai par linuksu, kā par ms kapraci) neko tik labu, lai mājsaimnieces paliktu mitras (paņemtu vairāk pa r 4%),uzprogrammēt nevar.

Un???

Tie varenie (edit j_obanie) webprogrammeri, kuri visu cenšas uztaisīt uz internetveikala šablona, gan jau vispār nezina, kas ir vim, emacs vai notepad++.

 

Labots - Jurkins
Link to comment
Share on other sites

AndrisBB
(labots)

Nenu es jau šad tad lietoju Vi, jo kad tu ie-SSH-ojies kautkādā devaisā, tad ko tu lietosi. Nano? Tas reizēm ir uz devaisiem.

Bet ja tas kautkāds 'gudrā' putekļsūcēja līmeņa devaiss, tad nekas cits uz viņa nebūs.

Labots - AndrisBB
Link to comment
Share on other sites

Jurkins

Nez gcc kompilators izdod kaut kādu specifisku rezultātu, ja ziķeris ir kodu rakstījis ar vim? Tipa strādā 5x ātrāk?

Link to comment
Share on other sites

AndrisBB
(labots)

Un kādu tad tu editoru lietosi uz mašinas kurai nav GUI?

Vai kādu tu iesaki tādā situācijā?

Labots - AndrisBB
Link to comment
Share on other sites

Jurkins

Andri, es nezinu un kaut kā pofig, bet šitā mērīšanās šķiet jokaina. Varbūt jums ir normāla parādība ... aizbraukt uz tuksnesi un tur atrast kādu konsoli, uz kuras iet tikai vim...

Link to comment
Share on other sites

AndrisBB

Tad tu vienkārši nesaproti darba specifiku.

Loģiski ka ja kāds strādā ar aparātiem, pie kuriem vienīgā pieeja ir serialais ports vai ssh, vai darbojas pārsvarā uz linuxa/mac iekšo konsoles, kompilējot, kautko scriptējot, tad skaidrs ka ērtāk ir atvērt to failu turpat konsolē, kautko pamainīt, un uzreiz kompilēt, nepārslēdzoties starp 100 logiem šurpu turpu, kur nu vēl bakstīties kautko ar peli.

Gadiem ejot vienkārši ietrenējas pietokoši effektīvi izmantot to rīku, ka lieto viņu aro weblapu veidošanai, ja baigi vajag.

Ja konsole ir redzēta tikai filmās, tad nu protams, ka brīnās kas tas par zvēru.

Link to comment
Share on other sites

Jurkins
(labots)

Es nestrīdos par ekstremāliem (nasa zonde caur com portu) gadījumiem. Bet ierēcu vispārēji.

Labots - Jurkins
Link to comment
Share on other sites

HIGH-Zen
pirms 8 stundām , Jurkins teica:

Nez gcc kompilators izdod kaut kādu specifisku rezultātu, ja ziķeris ir kodu rakstījis ar vim? Tipa strādā 5x ātrāk?

Programma nestrādās 5x ātrāk, bet ja esi VIM guru, tad to kodu pilnīgi iespējams, iekš VIM, uzrakstīsi/pielabosi 5x ātrāk, nekā bakstoties citā redaktorā.

Link to comment
Share on other sites

Raimonds1

Interesanti lasīt par siem specifiskajiem ikdienas darbam svarīgajiem jautājumiem.

 

Teiksim tā, cik apmēram laika ziņā aizņem šis tehniskais darbs, sabīdīt, pērcelt, pārbaudīt koda rindas, vai viss pareizi un darbojas un cik laika aizņem izdomāt kādu JAUNU, bibliotēkās, paraugos un paša saglabātajos kodos vēl neesošu principu, veidu kādu tehnisku uzdevumu risināšanai. Cik ir tā proporcija starp - ei, tas man te kaut kur ir un - jā, te vajadzēs padomāt, ko un kā.

Link to comment
Share on other sites

HIGH-Zen

@Raimonds1 tādas statistikas nav, parasti pielabo tik cik nepieciešams, lai programma darbotos bez kļūdām un jaunu funkcionalitāti pievieno tad, ja tā konkrētajā gadījumā ir vajadzīga. Tas drīzāk ir filozofisks jautājums. :)

Link to comment
Share on other sites

HIGH-Zen
(labots)
pirms 9 stundām , AndrisBB teica:

Un kādu tad tu editoru lietosi uz mašinas kurai nav GUI?

Vai kādu tu iesaki tādā situācijā?

pirms 9 stundām , AndrisBB teica:

vienīgā pieeja ir serialais ports vai ssh

Emacs TRAMP :)

Labots - HIGH-Zen
Link to comment
Share on other sites

binary
pirms 2 stundām , HIGH-Zen teica:

Programma nestrādās 5x ātrāk, bet ja esi VIM guru, tad to kodu pilnīgi iespējams, iekš VIM, uzrakstīsi/pielabosi 5x ātrāk, nekā bakstoties citā redaktorā.

15.04.2024. , 14:00, binary teica:

jebkurš softs ir tieši tik kruts, cik kruts ir tā lietotājs

Link to comment
Share on other sites

binary
pirms 1 stundas , Raimonds1 teica:

Teiksim tā, cik apmēram laika ziņā aizņem šis tehniskais darbs, sabīdīt, pērcelt, pārbaudīt koda rindas, vai viss pareizi un darbojas un cik laika aizņem izdomāt kādu JAUNU, bibliotēkās, paraugos un paša saglabātajos kodos vēl neesošu principu, veidu kādu tehnisku uzdevumu risināšanai. Cik ir tā proporcija starp - ei, tas man te kaut kur ir un - jā, te vajadzēs padomāt, ko un kā.

Kaut ko patiešām jaunu rada ļoti mazs skaits IT jomā nodarbināto. Atļaušos minēt, ka krietni zem 1% (pasaules līmenī). Pat jaunu, unikālu produktu radīšanai bieži vien var pietikt ar eksistējošu tehnisko risinājumu "atrašanu" un "pareizu sakombinēšanu".

 

Kas attiecas uz proporciju (cik laika aizņem uzrakstīt vai pamainīt kodu vs cik laika vajag, lai izdomātu risinājumu) - zini, tas pat nav īsti svarīgi. Svarīgi ir, lai tās 5-10min stundā, ko atvēli pogu spaidīšanai, varētu tiešām spaidīt pogas, nevis domāt, kuru nu pogu tagad jāspiež.

 

Nu pavisam truls (bet precīzs) piemērs no citas jomas. Parasta saruna starp trim-četriem cilvēkiem. Cik laika persona "A" pavada, lai uztvertu citu pateikto un izdomātu savu sakāmo? Un cik daudz laika pavada, lai pateiktu savu sakāmo? Savu domu izklāstīšana var aizņemt tos 5-10% no kopējā laika, bet kad ir pienācis laiks runāt, tad ir jārunā, nevis jādomā, kā kustināt žokli, kā kustināt mēli, kuros brīžos (un kā) veikt izelpu un ieelpu - tam visam jānotiek "backgroundā", automātiski, lai cilvēks varētu veiksmīgi pateikt to, ko atlikušajos 90-95% laika ir izdomājis. Citādi nekāda runāšana nesanāk un viss process tiek bremzēts - ne tikai tam vienam cilvēkam, bet visiem iesaistītajiem.

 

Nu ar koda rakstīšanu ir tas pats - vari 90% laika domāt, ko rakstīt, un 10% laika veltīt rakstīšanai. Bet lai tas tā strādātu, ir jāprot rakstīt. Citādi var sanākt, ka no tām 8 darba stundām koda rakstīšanai tomēr velta nevis 1h, bet 6h, attiecīgi domāšanai atliek nevis 7h, bet 2h. Tā kā domāšanai atliek 3x, 4x mazāk laika, tad konkrētā indivīda produktivitāte kopumā mierīgi var būt 5x, 10x zemāka nekā tādam, kurš tomēr "prot apieties ar instrumentiem". Atļaušos nemaz neminēt, kā tas var ietekmēt visas komandas produktivitāti (komandas biedru produktivitāte nereti ir tiešā veidā atkarīga no citu biedru produktivitātes).

Link to comment
Share on other sites

HIGH-Zen
Pirms 26 minūtēm , binary teica:

jebkurš softs ir tieši tik kruts, cik kruts ir tā lietotājs

Tas tomēr ir arī atkarīgs no softa funkcionalitātes, lai cik kruts būtu Windows Notepad lietotājs, viņš nevar paveikt to (vismaz ne tik ātri), ko ar to pašu Notepad++.

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...