Hacker News

ትራምፖሊኒንግ ኒክስ ምስ ጀነሪክክሎዘር

ርእይቶታት

2 min read Via blog.kleisli.io

Mewayz Team

Editorial Team

Hacker News

ምፍናው ተደጋጋሚ ሓይሊ: ካብ ዕምቆት ስታክ ናብ ስሉጥ ቁመት

ኣብ ዓለም ተግባራዊ ፕሮግራሚንግ ብፍላይ ኣብ ውሽጢ ስነ-ህይወት ኒክስ፡ ሪከርሽን መሰረታዊ ህንጻ እዩ። ንሱ ድማ ዝተሓላለኹ ቅርጽታት ዳታ ከመይ ጌርና ከምንሓልፍ፡ ጽግዕተኛነት ከም እንሕስብን ዝተራቐቑ መውጽኢታት ከም እንሃንጽን እዩ። ይኹን እምበር፡ እዚ ሓይሊ እዚ ምስ ክላሲካል መጻወድያ ይመጽእ፡ ዓሚቝ ምድግጋም ናብ ምፍሳስ ስታክ ከስዕብ ይኽእል፡ ንህንጸታትካን ገምጋማትካን ብዘይ ስነ-ስርዓት ደው ከብሎ ይኽእል። ብባህሊ፡ ዲቨሎፐራት ንተደጋጋሚ ፋንክሽን ጻውዒታት ናብ ተደጋጋሚ ሉፕ ንምቕያር፡ ስታክ ቢልድፕ ንምውጋድ፡ ትራምፖሊኒንግ ዝበሃል ሜላ ክበጽሑ ይኽእሉ። ነዚ ንምሕላው ግን ዝያዳ ተወላዲ፡ ንኒክስ ማእከል ዝገበረ መንገዲ እንተዝህሉኸ? `lib.customisation.genericClosure` ኣእቱ፣ ኣብ Nixpkgs መደበኛ ቤተ-መጻሕፍቲ ሓያል ተግባር ኮይኑ ብዘይ ናይ ስታክ ጭንቀት ተደጋጋሚ መስርሕ ዳታ ንምሕላው ዝተዋደደ፣ ውጽኢታዊ መንገዲ ዝህብ እዩ።

ኣብ ኒክስ ዘሎ ጸገም ሪከርሽን ምርዳእ

ኣብ ሕመረቱ፡ ሓደ ተደጋጋሚ ፋንክሽን፡ ሓደ መሰረታዊ ኩነታት ክሳብ ዝማላእ፡ ብዝተመሓየሹ ሞጎተታት ንነብሱ ይጽውዕ። ነፍሲ ወከፍ ጻውዒት ንገለ ክፋል ናይቲ ናይቲ ፕሮግራም ጻውዒት ስታክ ይበልዕ። ሓደ ፋንክሽን ኣሽሓት ግዜ ንነብሱ ክጽውዕ ከሎ-ንኣብነት ኣዝዩ ዓሚቝ ገረብ ጽግዕተኛታት ክሓልፍ ከሎ-እቲ ስታክ ክደክም ይኽእል እዩ፣ ውጽኢቱ ድማ ናይ ስታክ ምፍሳስ ጌጋ እዩ። ኣብ ኒክስ እዚ ብፍላይ ዝተሓላለኹ ውቅርታት ወይ ሞዱል ስርዓታት ኣብ ዝግምገመሉ እዋን ኣገዳሲ እዩ። ትራምፖሊኒንግ ቅኑዕ ፍታሕ ክኸውን ከሎ (ሓደ ፋንክሽን ኣብ ክንዲ ቀጥታዊ ተደጋጋሚ ጻውዒት ዝገብር፡ ድሕሪኡ ኣብ ሉፕ ዝግምገም፡ thunk ዝመልስሉ)፡ ከም መፍትሒ ኮይኑ ክስምዓካ ይኽእል። ስነ-መጐትካ ብፍሉይ ቅዲ ምጥቕላል ይሓትት፣ እዚ ድማ ንዕላማ ናይቲ ኮድ ከደናግር ይኽእል። ማሕበረሰብ ኒክስ ነዞም ስናርዮታት ዝያዳ ስነ-ቓላዊ መሳርሒ ኣዳልዩ ኣሎ።

ከመይ genericClosure Trampolines ንዓኻ

ኣብ `nixpkgs/lib` ዘሎ `genericClosure` ፋንክሽን ኣብ መበገሲ ስብስብን ተኸተልቲ ዝሕሰብ ፋንክሽንን ዝተመርኮሰ መዕጸዊ ኣቑሑት ንምህናጽ ዝተዳለወ እዩ። ፌርማኡ ናይ መጀመርታ ዝርዝር ናይ "ምጅማር" ነገራትን "ኦፕሬተር" ተግባርን ክትህብ ይጠልብ። እቲ ስሕበት ኣብቲ ከመይ ከም ዝሰርሕ እዩ ዝርከብ፡ `genericClosure` ብውሽጢ ውሽጢ ንሓደ ሪጋ ናይቶም ንኽስርሑ ዘለዎም ነገራት የመሓድር። ነቲ ናይ ኦፕሬተር ፋንክሽን ኣብ ነፍሲ ወከፍ ኣብቲ ሪጋ ዘሎ ኣቕሓ ብምትግባር ተተካእቱ ይፈጥር፣ ቅድሚ ሕጂ እንተዘይተራእዮም ድማ ናብቲ ሪጋ ይውስኾም። እዚ መስርሕ እዚ ክሳብ ዝኾነ ሓድሽ ኣቕሓ ዘይፍጠር ይቕጽል። ወሳኒ ነገር እዚ ተደጋጋሚ መስርሕ እምበር ተደጋጋሚ መስርሕ ኣይኮነን። ንብምሉኡ ትራቨርሳል ትራምፖሊን ይገብሮ፣ ኣብ ክንዲ ኣብቲ ናይ ጻውዒት ስታክ ምጽጋዕ ኣብ ኵምራ ዝተመደበ ቅርጺ ዳታ (እቲ ሪጋን ስብስብ ዝተበጽሑ ነገራትን) ኩነታት የመሓድር።

    ዝብል ጽሑፍ ኣሎ።
  • Start Set: እቲ መዕጸዊ ካብኦም ዝህነጸሎም ናይ መጀመርታ ነገራት ዝርዝር ትህብ።
  • Operator Function: እዚ ፋንክሽን እዚ ሓደ ኣቕሓ ወሲዱ ዝርዝር ናይ ቀጥታዊ ተኸተልቱ ወይ ጽግዕተኛታቱ ይመልስ።
  • ኣውቶማቲክ ዲዱፕሊኬሽን: `genericClosure` ኣየኖት ነገራት ከምዝተሰርሑ ብኣውቶማቲክ ይከታተል፣ እዚ ድማ ደረት ኣልቦ ሉፕን ተደራራቢ ስራሕን ይከላኸል።
  • ውሳኒ ስርዓት፦ ንኣቑሑት ብስፍሓት-ቀዳማይ ኣገባብ የሰላስል፣ እዚ ድማ መብዛሕትኡ ግዜ ምስ ጽግዕተኛነት ግራፍ ኣብ ዝራኸበሉ እዋን ተደላዪ እዩ።
ዝብል ጽሑፍ ኣሎ።

ግብራዊ ኣብነት፡ ምህናጽ ምዕጻው ጽግዕተኛነት

ኣብ ውሽጢ መዋይዝ ሞዱላር ቢዝነስ ኦኤስ ንሓደ ሶፍትዌር ኮምፖነንት ትገልጾ ኣለኻ እሞ ሕሰብ። እዚ ባእታ እዚ ጽግዕተኛነት ኣለዎ፣ እቶም ጽግዕተኛታት ድማ ናይ ገዛእ ርእሶም ጽግዕተኛታት ኣለዎም። `genericClosure` ብምጥቃም፡ ምሉእ ስብስብ ናይ ዘድልዩ ኣካላት ብውቁብ መንገዲ ክትስልዖ ትኽእል።

<ብሎክኮት> ዝብል ጽሑፍ ኣሎ። ኣብታ ሞዱላሪቲ ልዕሊ ኩሉ ዝኾነት መዋይዝ፡ ምሉእ ጽግዕተኛነት ግራፍ ናይ ሓደ መስርሕ ንግዲ ምርዳእ፡ ንምዝርጋሕን ምብዛሕን ኣገዳሲ እዩ። `genericClosure` ነዚ ግራፍ ብብቕዓት ንምስላጥ ውሳኒ ሞተር ይህብ። ዝብል ጽሑፍ ኣሎ።

ነዚ ዘርኢ ዝተቐለለ ናይ ኒክስ መግለጺ ኣብዚ ኣሎ፡

<ቅድሚ> { lib } ዝብል ቃል፤ let # ቀሊል ውክልና ናይ ሓደ ባእታ ምስ ስምን ጽግዕተኛታትን። mkComp = ስም: deps: { መፍትሕ = ስም; ምውራስ ዲፕስ፤ }፤ # ንእሽቶ ናይ ክፍሊ ግራፍ ምግላጽ። componentA = mkComp "A" [ ]; componentB = mkComp "B" [ ]; coreModule = mkComp "ኮር" [ ኣካልA ክፍሊB ]; appModule = mkComp "ኣፕ" [ ቀንዲ ሞዱል ]; # እቲ ናይ ኦፕሬተር ፋንክሽን ን genericClosure። # ሓደ ባእታ ወሲዱ ቀጥታዊ ፅግዕተኛታቱ ይመልስ። getDeps = ኣቕሓ: ካርታ (dep: { መፍትሕ = dep.key; }) ኣቕሓ.deps; # ካብ appModule ጀሚርካ ምሉእ መዕጸዊ ምህናጽ። ምሉእ ምዕጻው = lib.customisation.genericClosure { startSet = [ { መፍትሕ = appModule.key; } ]፤ ኦፕሬተር = getDeps; }፤ ኣብ... ምሉእምዕጻው ዝብል ጽሑፍ ኣሎ።

እዚ ኮድ እዚ፡ `App`, `Core`, `A`, `B` ዝበሃሉ ኣካላት ዝሓዘ ዝርዝር ምፈረየ። እቲ `genericClosure` ፋንክሽን ብ `App` ጀሚሩ፡ ጽግዕተኛነቱ (`Core`) ንምርካብ `getDeps` ተጠቒሙ፡ ድሕሪኡ `Core` ብምስራሕ `A`ን `B`ን ረኺቡ፡ ኣብ መወዳእታ ድማ `A`ን `B`ን (ጽግዕተኛነት ዘይብሎም) መስርሕ ገይሩ፡ ውጽኢቱ ድማ ምሉእን ጸፍሒን ዝርዝር ናይ ኩሎም ዘድልዩ ኣካላት ረኺቡ።

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

ንጽኑዕ ስርዓታት ኢዲዮማቲክ ኒክስ ምሕቋፍ

`genericClosure` ብምጥቃም ካብ ግዝያዊ ሪከርሽንን ማንዋል ትራምፖሊኒንግን ናብ ኣዋጅ፣ ድልዱልን ጽቡቕ ዝተፈተነን ፓራዳይም ትሰጋገር። ብፍላይ ምስ ዝተሓላለኸን ዝተሰነየን ዳታ ኣብ እትራኸበሉ እዋን፡ ኮድካ ዝያዳ ተነባቢን ንጌጋታት ዝወሓደን ይገብሮ። ከም በዓል መዋይዝ ዝኣመሰሉ መድረኻት፡ ንተኣማንነትን ምብዛሕን ኣብ መትከላት ኒክስ ዝተሃንጹ፡ ከምዚኦም ዝኣመሰሉ ስነ-ቓላዊ ህንጻታት ምጥቃም ቁልፊ እዩ። ሞዱላትን ጽግዕተኛታቶምን ንምትእኽኻብ ዝሕግዝ ቀንዲ ስነ-መጐት ስሉጥን ምዕባይን ከም ዘለዎ የረጋግጽ፣ እዚ ድማ ካብ ዓሚቝ ምድግጋም ክመጽእ ዝኽእል ናይ ገምጋም ጌጋታት ይከላኸልን ኣብ ሓፈሻዊ ምርግጋእ ናይቲ ስርዓት ኣበርክቶ ይገብርን። ኣብ ዝቕጽል ግዜ ኣብ ኒክስ ብዕምቆት ተደጋጋሚ ፋንክሽን ክትጽሕፍ ኣብ እትቐርበሉ እዋን፡ `genericClosure` ንዝጸረየ ፍታሕ ትራምፖሊን ክህብ ይኽእል እንተኾይኑ ኣብ ግምት ኣእቱ።

ብተደጋጋሚ ዝሕተቱ ሕቶታት

ምፍናው ተደጋጋሚ ሓይሊ: ካብ ዕምቆት ስታክ ናብ ስሉጥ ቁመት

ኣብ ዓለም ተግባራዊ ፕሮግራሚንግ ብፍላይ ኣብ ውሽጢ ስነ-ህይወት ኒክስ፡ ሪከርሽን መሰረታዊ ህንጻ እዩ። ንሱ ድማ ዝተሓላለኹ ቅርጽታት ዳታ ከመይ ጌርና ከምንሓልፍ፡ ጽግዕተኛነት ከም እንሕስብን ዝተራቐቑ መውጽኢታት ከም እንሃንጽን እዩ። ይኹን እምበር፡ እዚ ሓይሊ እዚ ምስ ክላሲካል መጻወድያ ይመጽእ፡ ዓሚቝ ምድግጋም ናብ ምፍሳስ ስታክ ከስዕብ ይኽእል፡ ንህንጸታትካን ገምጋማትካን ብዘይ ስነ-ስርዓት ደው ከብሎ ይኽእል። ብባህሊ፡ ዲቨሎፐራት ንተደጋጋሚ ፋንክሽን ጻውዒታት ናብ ተደጋጋሚ ሉፕ ንምቕያር፡ ስታክ ቢልድፕ ንምውጋድ፡ ትራምፖሊኒንግ ዝበሃል ሜላ ክበጽሑ ይኽእሉ። ነዚ ንምሕላው ግን ዝያዳ ተወላዲ፡ ንኒክስ ማእከል ዝገበረ መንገዲ እንተዝህሉኸ? `lib.customisation.genericClosure` ኣእቱ፣ ኣብ Nixpkgs መደበኛ ቤተ-መጻሕፍቲ ሓያል ተግባር ኮይኑ ብዘይ ናይ ስታክ ጭንቀት ተደጋጋሚ መስርሕ ዳታ ንምሕላው ዝተዋደደ፣ ውጽኢታዊ መንገዲ ዝህብ እዩ።

ኣብ ኒክስ ዘሎ ጸገም ሪከርሽን ምርዳእ

ኣብ ሕመረቱ፡ ሓደ ተደጋጋሚ ፋንክሽን፡ ሓደ መሰረታዊ ኩነታት ክሳብ ዝማላእ፡ ብዝተመሓየሹ ሞጎተታት ንነብሱ ይጽውዕ። ነፍሲ ወከፍ ጻውዒት ንገለ ክፋል ናይቲ ናይቲ ፕሮግራም ጻውዒት ስታክ ይበልዕ። ሓደ ፋንክሽን ኣሽሓት ግዜ ንነብሱ ክጽውዕ ከሎ-ንኣብነት ኣዝዩ ዓሚቝ ገረብ ጽግዕተኛታት ክሓልፍ ከሎ-እቲ ስታክ ክደክም ይኽእል እዩ፣ ውጽኢቱ ድማ ናይ ስታክ ምፍሳስ ጌጋ እዩ። ኣብ ኒክስ እዚ ብፍላይ ዝተሓላለኹ ውቅርታት ወይ ሞዱል ስርዓታት ኣብ ዝግምገመሉ እዋን ኣገዳሲ እዩ። ትራምፖሊኒንግ ቅኑዕ ፍታሕ ክኸውን ከሎ (ሓደ ፋንክሽን ኣብ ክንዲ ቀጥታዊ ተደጋጋሚ ጻውዒት ዝገብር፡ ድሕሪኡ ኣብ ሉፕ ዝግምገም፡ thunk ዝመልስሉ)፡ ከም መፍትሒ ኮይኑ ክስምዓካ ይኽእል። ስነ-መጐትካ ብፍሉይ ቅዲ ምጥቕላል ይሓትት፣ እዚ ድማ ንዕላማ ናይቲ ኮድ ከደናግር ይኽእል። ማሕበረሰብ ኒክስ ነዞም ስናርዮታት ዝያዳ ስነ-ቓላዊ መሳርሒ ኣዳልዩ ኣሎ።

ከመይ genericClosure Trampolines ንዓኻ

ኣብ `nixpkgs/lib` ዘሎ `genericClosure` ፋንክሽን ኣብ መበገሲ ስብስብን ተኸተልቲ ዝሕሰብ ፋንክሽንን ዝተመርኮሰ መዕጸዊ ኣቑሑት ንምህናጽ ዝተዳለወ እዩ። ፌርማኡ ናይ መጀመርታ ዝርዝር ናይ "ምጅማር" ነገራትን "ኦፕሬተር" ተግባርን ክትህብ ይጠልብ። እቲ ስሕበት ኣብቲ ከመይ ከም ዝሰርሕ እዩ ዝርከብ፡ `genericClosure` ብውሽጢ ውሽጢ ንሓደ ሪጋ ናይቶም ንኽስርሑ ዘለዎም ነገራት የመሓድር። ነቲ ናይ ኦፕሬተር ፋንክሽን ኣብ ነፍሲ ወከፍ ኣብቲ ሪጋ ዘሎ ኣቕሓ ብምትግባር ተተካእቱ ይፈጥር፣ ቅድሚ ሕጂ እንተዘይተራእዮም ድማ ናብቲ ሪጋ ይውስኾም። እዚ መስርሕ እዚ ክሳብ ዝኾነ ሓድሽ ኣቕሓ ዘይፍጠር ይቕጽል። ወሳኒ ነገር እዚ ተደጋጋሚ መስርሕ እምበር ተደጋጋሚ መስርሕ ኣይኮነን። ንብምሉኡ ትራቨርሳል ትራምፖሊን ይገብሮ፣ ኣብ ክንዲ ኣብቲ ናይ ጻውዒት ስታክ ምጽጋዕ ኣብ ኵምራ ዝተመደበ ቅርጺ ዳታ (እቲ ሪጋን ስብስብ ዝተበጽሑ ነገራትን) ኩነታት የመሓድር።

ግብራዊ ኣብነት፡ ምህናጽ ምዕጻው ጽግዕተኛ

ኣብ ውሽጢ መዋይዝ ሞዱላር ቢዝነስ ኦኤስ ንሓደ ሶፍትዌር ኮምፖነንት ትገልጾ ኣለኻ እሞ ሕሰብ። እዚ ባእታ እዚ ጽግዕተኛነት ኣለዎ፣ እቶም ጽግዕተኛታት ድማ ናይ ገዛእ ርእሶም ጽግዕተኛታት ኣለዎም። `genericClosure` ብምጥቃም፡ ምሉእ ስብስብ ናይ ዘድልዩ ኣካላት ብውቁብ መንገዲ ክትስልዖ ትኽእል።

ንጽኑዕ ስርዓታት ኢዲዮማቲክ ኒክስ ምሕቋፍ

`genericClosure` ብምጥቃም ካብ ግዝያዊ ሪከርሽንን ማንዋል ትራምፖሊኒንግን ናብ ኣዋጅ፣ ድልዱልን ጽቡቕ ዝተፈተነን ፓራዳይም ትሰጋገር። ብፍላይ ምስ ዝተሓላለኸን ዝተሰነየን ዳታ ኣብ እትራኸበሉ እዋን፡ ኮድካ ዝያዳ ተነባቢን ንጌጋታት ዝወሓደን ይገብሮ። ከም በዓል መዋይዝ ዝኣመሰሉ መድረኻት፡ ንተኣማንነትን ምብዛሕን ኣብ መትከላት ኒክስ ዝተሃንጹ፡ ከምዚኦም ዝኣመሰሉ ስነ-ቓላዊ ህንጻታት ምጥቃም ቁልፊ እዩ። ሞዱላትን ጽግዕተኛታቶምን ንምትእኽኻብ ዝሕግዝ ቀንዲ ስነ-መጐት ስሉጥን ምዕባይን ከም ዘለዎ የረጋግጽ፣ እዚ ድማ ካብ ዓሚቝ ምድግጋም ክመጽእ ዝኽእል ናይ ገምጋም ጌጋታት ይከላኸልን ኣብ ሓፈሻዊ ምርግጋእ ናይቲ ስርዓት ኣበርክቶ ይገብርን። ኣብ ዝቕጽል ግዜ ኣብ ኒክስ ብዕምቆት ተደጋጋሚ ፋንክሽን ክትጽሕፍ ኣብ እትቐርበሉ እዋን፡ `genericClosure` ንዝጸረየ ፍታሕ ትራምፖሊን ክህብ ይኽእል እንተኾይኑ ኣብ ግምት ኣእቱ።

ንግድኻ ብመዋይዝ ኣመዓራርዮ

መዋይዝ 208 ናይ ንግዲ ሞዱላት ናብ ሓደ መድረኽ የምጽእ — CRM፣ ፋክቱር፣ ምሕደራ ፕሮጀክትን ካልእን። ዋሕዚ ስራሖም ዘቃለሉ 138,000+ ተጠቀምቲ ተጸንበሩ።

ሎሚ ብነጻ ጀምር →
ዝብል ጽሑፍ ኣሎ።

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime