Yıllar önce kariyerime yeni başladığımda, birkaç arkadaşımla yeni bir başlangıç fikri ile bir araya geldik. Plan, işten birkaç gün uzaklaşmak, bir yerde bir otel odası almak (o zamanlar ortak çalışma alanları neredeyse yoktu) ve yeni heyecan verici prototipimizi hacklemeye başlamaktı. Ancak bilgisayarlarımız yüzünden biraz sıkışıp kaldık.
İşime birkaç yıl sonra yeni başlamıştım ve evde yalnızca kendi kendine monte edilmiş bir tam kule bilgisayarım vardı, ancak taşınabilir hiçbir şey yoktu. Daha iyi finanse edilen arkadaşımın bir dizüstü bilgisayarı vardı ve benim için bir başkasından ödünç alabileceğini söyledi, diğer arkadaşım ise kendi taşınabilir bilgisayarı olduğunu söyledi.
Kendi planlamamızı yapmaya başladık ve o gün geldiğinde, arkadaşımın 'taşınabilir bilgisayarı' karşısında hayli şaşkına döndük. Fotoğraf çekmeyi başaramadım - o zaman kimsenin kamera taşıma gibi sıradan bir alışkanlığı yok ve telefonuyla fotoğraf çekmek isteyenler çılgın bir çılgın olarak kabul edilir (telefona bir film rulosu nasıl yapıştırılır)?
'Taşınabilir bilgisayarı', faresi, tam boy klavyesi ve güç kablolarıyla birlikte kırmızı bir süpermarkette alışveriş yapan plastik poşetteki orta kuledeki makinesiydi. Çenelerimizi yerden kaldırdıktan sonra açıkladığı gibi planı, onu otel odasındaki TV'ye bağlamaktı.
Taşınabilir bilgisayarlar o zamandan beri uzun bir yol kat etti.
Çoğunlukla Go kullanarak geliştiriyorum ama bazen hala Python (veri bilimi işleri için) ve Ruby (hızlı bir şey veya eski projelerim üzerinde çalışan) yapıyorum. İken benim işlerin çoğunu internet üzerinde duruldu , ben bazen alt düzey gelişimini yapacağız. Bu genellikle, makinenin kendisine erişmem gerektiği ve ihtiyacım olan kitaplıkları ve paketleri kurma, konsola erişim ve iyi bir metin düzenleyici veya IDE'ye sahip olmam gerektiği anlamına gelir.
Ana geliştirme makinem, güç ve taşınabilirliğin birleşimi bana en uygun olan bir MacBook Pro. Taşınabilirlik benim için önemli çünkü biraz hareket ediyorum ve açıkçası istediğim zaman ve yerde geliştirmek istiyorum. Okumak, sörf yapmak, e-posta göndermek ve sohbet etmek gibi birçok şey için zaten iPad Pro'yu oldukça yoğun bir şekilde kullanıyorum. Soru şu ki, bunun üzerinde yazılım geliştirme de yapabilir miyim?
İPadOS üzerinde geliştirme, tırmanılması zor bir tepedir çünkü duvarlarla çevrili bir bahçe. Python, Ruby ve hatta Java'yı şimdi iPadOS üzerinde çalıştırmanın bazı yolları olsa da, önemli sınırlamalar var. Bu, bizi iPad Pro'da yazılım geliştirmeye bırakıyor, ancak başka bir yerdeki başka bir makineye kanal olarak kalıyor.
Teknik olarak konuşursak, bulutta sunucuları veya sanal masaüstlerini çalıştırarak her şeyi web üzerinden geliştirebilirim. Gerçekçi olsa da, bulut sunucunuz aynı ülke içinde ve ülkeniz oldukça küçük olsa bile çok yavaştır. Ayrıca, çevrimdışıysanız (belki bir uçakta veya İnternet erişimi olmayan uzak bir konumdaysanız), geliştirme makineniz bulut üzerindeyse, oldukça sıkışıp kalırsınız.
Buluta gitmek yerine çevrimdışı bir Raspberry Pi geliştirme makinesi fikri yeni değil, ne benim için ne de Pi ateşine yakalanan birçok kişi için. Buradaki fikir, ihtiyaçlarınızı karşılamak için bulut üzerinde yeni bir sunucu döndürmek yerine onu bir Raspberry Pi'ye bağlamanız yeterli. Pi yeterince ucuz ve Linux çalıştırıyor ve çantanıza yapıştırıp her yere yanınızda götürebilirsiniz.
Genellikle iki sorun vardı. Biri, dahili bir bataryası olmadığı için Pi'ye nasıl güç verileceği. Tabii ki onu harici olarak bir duvar prizine ve bir güç adaptörüne bağlayarak çalıştırabilirsiniz ancak taşınabilirliğini azaltır ve çalışması için duvar prizlerine ihtiyacınız vardır. Alternatif olarak, onu bir mobil güç bankasına da bağlayabilirsiniz. Güç bankasındaki derecelendirmeye bağlı olarak, birkaç saat rahatça çalışabilir, ancak elbette bu, yanınızda bir güç bankası taşımanız gerektiği anlamına da gelir.
İkinci sorun, Pi ile veri bağlantısının nasıl yapılacağıdır. Bunu yapmanın iki yolu vardır, ilki yerleşik ethernet bağlantı noktasını kullanmaktır. Basitçe, bir ethernet kablosu kullanın ve iPad Pro'nuza bağlayın. Bununla birlikte, bu, iPad Pro'nuza bağlanacak ve her şeyi biraz hantal hale getirecek bir ethernet bağlantı noktasına sahip bir adaptöre veya hub'a ihtiyacınız olduğu anlamına gelir (özellikle güç kablolarını eklerseniz).
Diğer seçenek ise wifi kullanmaktır. Pi'nin dahili kablosuz bağlantısı vardır. İPad Pro'yu bir hotspot yapıyoruz ve ardından Pi'yi hotspot'a bağlıyoruz. Bu yine de bazı sorunlara neden oluyor - artık iPad Pro'yu bir etkin nokta haline getirdiğiniz için, artık wifi kullanamaz, yalnızca hücresel veri bağlantısını kullanabilirsiniz. Ama işe yarıyor. Ne yazık ki hız sorunları var ve onunla bulutta bir sunucuyu döndürmekten çok daha iyi durumda değilsiniz.
Yine de başka bir orta yol var ve Raspberry Pi 4 Model B ile oldukça zarif görünen bir yol var . Pi4'ün birkaç ilginç donanım değişikliği var (detaylandırmayacağım, internetten başka bir yerde kolayca öğrenebilirsiniz) ancak amacımız için oldukça yararlı olan, Pi4'ün güç sağlayabileceğiniz bir USB-C bağlantı noktasına sahip olmasıdır. ile, ancak aynı zamanda veri aktarmak için de kullanın.
Bunun nereye gittiğini görebilirsiniz. İPad Pro'dan Pi4'e bir USB-C kablosu yapıştırarak hem güç hem de veri bağlantısı sorunlarını tek bir kabloyla çözüyoruz!
Tekrarlamak gerekirse - iPad Pro'yu (USB-C bağlantı noktasına sahip olanı) Pi4'ün USB-C bağlantı noktasına bağlarsak, Pi4'ü doğrudan iPad Pro'dan çalıştırabiliriz. Aynı zamanda, kablo aynı zamanda veri kanalı görevi görür - sadece Pi4'ü USB-C bağlantı noktasını bir ethernet bağlantı noktası olarak görmeye ikna etmemiz gerekir.
Bunu yapma şeklimiz, Pi4'ü bir USB ethernet aygıtı olarak kurmaktır.
Başlamadan önce, bir USB aygıtının ne olduğunu biraz anlayalım.
Bir USB Linux aygıtı , bir UDC'ye (USB Aygıt Denetleyicisi) sahip olan ve onu ek işlevlerle genişletmek için bir USB ana bilgisayarına (bir bilgisayar veya bir iPad Pro gibi) bağlanabilen bir aygıttır. Bir gadget , her biri bir veya daha fazla işlev içeren bir dizi yapılandırma ile tanımlanır . Bizim durumumuzda, yaptığımız şey, Pi4'ü ethernet üzerinden USB işlevi ile bir USB Linux aygıtı olarak kurmaktır.
Bu yöntemin Pi4 Model B ve Pi Zero (ve ayrıca Raspberry Pi 3 A +) için iyi çalıştığını, ancak donanımın kendisi aynı şekilde veri aktarımını desteklemediği için diğer Raspberry Pi modelleri için uygun olmadığını unutmayın.
Başlayalım.
Raspbian kullanıyorum (Buster bunu kurarken şu anki sürüm) çünkü Debian'a daha aşinayım - tercih ettiğiniz diğer dağıtımları deneyebilirsiniz.
Öncelikle, aygıt ağacı katmanındaki
dwc2 sürücüyü kullanarak Pi4'ü gadget olarak ayarlamalı ve sonra yüklemeliyiz.
dtoverlay=dwc2için
/boot/config.txt
modules-load=dwc2Sonuna ekle
/boot/cmdline.txt
Ekle 3.
libcompositeetmek
/etc/modules
Sonraki adım, gadget'ımızı yapılandırdığımız yerdir . Bunu yapmak için, önyükleme sırasında çalışacak bir komut dosyası oluşturduk. Bu komut dosyasında aşağıdakileri yapacağız:
ben. Gadget'ı temsil edecek bir dizin oluşturun
ii. Satıcı kimliği, ürün kimliği vb. Dahil olmak üzere çeşitli gadget parametrelerini ayarlayın.
iii. Dizinin altında yapılandırmaları oluşturun ve ihtiyacımız olan USB işlevini somutlaştırın. Bu durumda ECM'yi (Ethernet Kontrol Modeli) kullanacağız
iv. Fonksiyonu konfigürasyonla sembolik bağlantılarla ilişkilendirin
v. UDC adını (in
/sys/class/udc) UDC özelliğine yazarak gadget'ı etkinleştirin
4.
/root/usb.shYukarıdaki adımları uygulamak için oluşturun .
#!/bin/bash # create a directory to represent the gadget cd /sys/kernel/config/usb_gadget/ # must be in this dir mkdir -p pi4 cd pi4 # the USB vendor and product IDs are issued by the USB-IF # each USB gadget must be identified by a vendor and # product ID echo 0x1d6b > idVendor # Linux Foundation echo 0x0104 > idProduct # Multifunction Composite Gadget mkdir -p strings/0x409 # set it up as English # The configuration below is arbitrary echo "1234567890abcdef" > strings/0x409/serialnumber echo "Chang Sau Sheong" > strings/0x409/manufacturer echo "Pi4 USB Desktop" > strings/0x409/product # create a configuration mkdir -p configs/c.1 # create a function # ECM is the function name, and usb0 is arbitrary string # that represents the instance name mkdir -p functions/ecm.usb0 # associate function to configuration ln -s functions/ecm.usb0 configs/c.1/ # bind the gadget to UDC ls /sys/class/udc > UDC # start up usb0 ifup usb0 # start dnsmasq service dnsmasq restart
5.
/root/usb.shile çalıştırılabilir yapın
chmod +x /root/usb.sh
Ekle 6.
/root/usb.shetmek
/etc/rc.localönce
exit 0
Pi4'ünüz artık arayüzle birlikte bir ethernet gadget'ı olarak yapılandırıldı,
usb0ancak yine de ağ yapılandırmalarının geri kalanının doğru şekilde kurulduğundan emin olmamız gerekiyor.
Dnsmasq , küçük ağlar için ağ altyapısı sağlayan açık kaynaklı bir projedir ve onu iPad Pro ile Pi4 arasındaki gerçekten küçük ağ için kullanacağız. DNS, DHCP, yönlendirici reklamı ve ağ önyüklemesini içerir ve akıllı telefonlarda ve taşınabilir erişim noktalarında bağlantı kurmak için yaygın olarak kullanılır.
7. dnsmasq'ı kurun
sudo apt-get install dnsmasq
Dnsmasq'ı kurduktan sonra, onu için uygun şekilde kurmamız gerekir
usb0.
8.
/etc/dnsmasq.d/usbAşağıdaki ile dosyayı oluşturun :
interface=usb0 dhcp-range=192.168.100.2,192.168.100.200,255.255.255.248,1h dhcp-option=3 leasefile-ro
Ekle 9.
denyinterfaces usb0etmek
/etc/dhcpcd.conf
Son adım, için ağ arayüzünü kurmaktır
usb0.
10.
/etc/network/interfaces.d/usb0Aşağıdakilerle oluşturun :
auto usb0 allow-hotplug usb0 iface usb0 inet static address 192.168.100.1 netmask 255.255.255.248
Yukarıdaki tüm adımları tamamladıysanız, hepsi bu!
Pi4'ü yeniden başlatmanız, iPad Pro'nuza eklemeniz yeterlidir ve kısa bir süre sonra Ayarlar'ın altında yeni bir Ethernet satırı görmelisiniz . Bu, Pi4'ün bir ethernet bağlantısı aracılığıyla iPad Pro'ya bağlı olduğu anlamına gelir.
Pi4 USB Masaüstü ayarını seçerseniz, bunun gibi bir şey görmelisiniz. IP adresi ve alt ağ maskesi dnsmasq tarafından atanır ve iPad Pro'nun IP adresini temsil eder.
Tüm bunları görürseniz, Pi4'ünüz kurulmuş ve bağlanmıştır!
Yani Pi4'ü bir geliştirme makinesi olarak ayarladınız ve iPad Pro'nuzu ona bağladınız. Sırada, geliştirmeye başlamak için iPad Pro'nuzda doğru araçları edinebilirsiniz. İPadOS'ta aralarından seçim yapabileceğiniz çok sayıda uygulama var, ancak işte kullandıklarım.
İPad'de çok sayıda SSH istemcisi var, ancak denediğim ve nihayetinde hala sakladığım iki uygulama Termius ve Prompt . Her ikisi de profesyonelce yazılmış ve birçok iyi özelliğe sahip güzel uygulamalardır.
Tam ekrana erişmeme izin verdiği için Termius'u tercih ettim ve Prompt beni biraz rahatsız eden bu büyük üst menü çubuğuna sahipti. Ancak zamanla beni Termius'tan uzaklaştıran şey sadece abonelik modeli değil (aslında bir yıl abone oldum), aynı zamanda abonelik ücretini yılda yaklaşık 10 dolardan ayda 10 dolara çıkarmasıydı. Buna ek olarak, her kapattığımda ve bu kullanılamaz olduğunda bağlandığım sunucu ile bağlantısı kesiliyor (adil olmak gerekirse, iOS ve Termius nedeniyle bir dezavantajı daha sonra düzeltti).
Bu arada, SSH istemci uygulamaları olan terminal emülatörlerinin yerine geçebilecek farklı bir uygulama kategorisi keşfettim.
SSH istemcileri kadar olmasa da birkaç terminal öykünücüsü vardır ve bunların çoğu açık kaynak kodlu veya ücretsiz olma eğilimindedir. Terminal emülatörlerinin SSH istemcilerine göre sahip olduğu bir avantaj, bunu doğrudan iPadOS üzerinden çalıştırabilmenizdir! Emülatörün karmaşıklığına bağlı olarak, üzerinde uygulamaları derlemek ve çalıştırmak da dahil olmak üzere oldukça ileri gidebilir.
En sevdiğim terminal öykünücüsü, iSH adlı bu oldukça havalı açık kaynak projesidir ; bu, esasen bir kullanıcı modu x86 öykünücüsü kullanarak iOS / iPadOS üzerinde yerel olarak çalışan bir Linux kabuk ortamıdır. Alpine Linux'a dayanır ve Python3, Ruby ve hatta Java gibi şeyler yükleyebilirsiniz! Ancak bir öykünücü olduğu için sınırlamalar vardır, örneğin Ruby üzerinde oldukça zayıf çalışır ve genellikle üzerinde çalışmayan mücevherler vardır. Jupyter Notebook da üzerinde çalışır (kurulumu uzun sürer) ancak gerçekten yavaş çalışır (sonuçta bir emülatördür).
Ayrıca Go ve Rust, desteklemediği MMX komut seti öykünmesi gerektirdiğinden üzerinde çalışmaz. Bu tarih itibariyle piyasaya sürülen bir proje değil, ancak kendi başınıza indirebilir, derleyip dağıtabilir veya bir TestFlight beta denemesine kaydolabilirsiniz.
Sevdiğim bir diğer terminal öykünücüsü , bir terminal deneyimi ve önceden yüklenmiş bir dizi paket sunan açık kaynaklı bir proje olan LibTerm'dir . LibTerm'de Python 3.7 ve Lua 5.3 önceden kurulmuştur ve hatta C'yi bile derleyebilirsiniz! Dosya sistemi aracılığıyla başka paketler ekleyebilirsiniz, bu genellikle Dosyalar uygulamasının erişmenize izin verdiği şeydir.
Dosyalar, iPad Pro'daki en kullanışlı uygulamalardan biridir ve her zaman çeşitli bulut hizmetlerinde ve iPad Pro'nun kendisinde dosyalarıma bağlanmak için kullanıyorum. Dosyaları Pi4'e bir Samba sunucusu aracılığıyla da bağlayabilirsiniz.
Samba , SMB (Sunucu İleti Bloğu) ağ protokolünün açık kaynaklı bir yeniden uygulamasıdır ve Linux sistemlerinde dosya ve yazdırma hizmetleri sağlar. Samba, amaçlarımız doğrultusunda iPad Pro'daki Dosyalar uygulamasını Pi4'teki dizinlere bağlamamızı sağlar. Bunun nasıl yapılacağını görelim.
Öncelikle Samba sunucusunu Pi4'e kurmanız gerekir.
sudo apt install samba samba-common-bin
[sausheong] path = /home/sausheong writeable=Yes create mask=0777 directory mask=0777 public=no
sudo smbpasswd -a sausheong
sudo systemctl restart smbd
…ve bir sunucuya bağlanmayı seçin.
Next
Next.
İPad Pro'mda kod düzenleyicileri kullanmıyorum çünkü kullandıklarımın hiçbiri normal kodlama iş akışıma uymuyor. Özellikle kod yazdığımda veya kodda değişiklik yaptığımda, değişikliklerin kaydedilmesini bekliyorum. Ne yazık ki, daha önce denediğim kod editörlerinin çoğu, dosyaları sunucuyla senkronize etmenin ikincil bir adımını gerektiriyor ve bu da akışımı gerçekten bozuyor.
Birkaç istisna var, özellikle Kodex, Pi4 üzerindeki bir Samba sunucusuna bağlanmak için Dosyalar uygulamasını kullanmama izin veriyor ve oldukça iyi çalışıyor. Ancak arayüzü sevmiyorum (evet, seçiciyim), öyleydi. Yine de, Coda veya Buffer gibi daha popüler kod editörlerini denemedim, çünkü esasen buna değeceklerinden emin değilim.
Ayrı bir geliştirme makinesi olarak Pi4 ile de şunu sorabilirsiniz, neden onu tamamen uzak bir masaüstü yapmıyorsunuz? Bununla VNC (Virtual Network Computing) kullanmayı kastediyorum . Ve tabii ki, sizi bunu yapmaktan alıkoyan hiçbir şey yok.
Başlatılmayanlar için VNC, başka bir bilgisayarı uzaktan kontrol etmek için Uzak Çerçeve Arabelleği protokolünü (RFB) kullanan grafiksel bir uzak masaüstü sistemidir. Klavye ve fare olaylarını bir bilgisayardan diğerine gönderir ve ekran güncellemelerini bir ağ üzerinden geri alır.
Raspbian yerleşik gelen VNC bağlayın RealVNC VNC Server ve istemci içerir. VNC istemcisini iPad Pro'dan kullanacağız, bu yüzden sunucuyu Pi4'te etkinleştirmemiz gerekiyor.
raspi-configAracı çalıştırın komut satırından Pi4'ü yapılandırın:
sudo raspi-config
İPad'de bir VNC istemcisi kurmanız gerekir. Çok az var ama tutarlı olması için RealVNC'den VNC Görüntüleyiciyi kullandım. Yeni bir sunucu ekleyin ve IP adresini (benim durumumda 192.168.100.1) ve adı girin. Kullanıcı adı ve parola, Pi4'te oturum açmak için kullandığınız kullanıcı adı ve parolanın aynısıdır (
pioluşturduğunuz kullanıcı ya da kullanıcı). Tek yapmanız gereken bu, iPad'inizi Pi4'e bağlayın ve uzaklaşın!
Son olarak, Pi4'e uzaktan girmenize rağmen merak ediyorsanız, oldukça beceriksiz dokunmatik arayüz veya oldukça aptal uzaktan fareyi kullanmak yerine Pi4'e bir fare ekleyebilir misiniz? Ve neden olmasın. Uzak masaüstünüz gerçekten çok uzakta olsa imkansız olurdu, ancak bu sadece iPad'inizin yanında küçük bir kutu, bu yüzden USB bağlantı noktalarından birine bir fare yapıştırmanız yeterli! Oldukça iyi çalışıyor.
Ve kablolu bir fare eklediğinize göre, neden kablosuz değil, neden Bluetooth fare olmasın? Bu da bir cazibe gibi çalışıyor!
Daha önce iPad Pro'mda kod düzenleyici uygulamaları kullanmadığımdan bahsetmiştim. Her zamanki kod düzenleyicim MacBook Pro'mdaki Visual Studio Code'dur ve maalesef iPadOS'ta çalışmıyor. Ancak, yüklemek biraz daha karmaşık olsa da Pi4'te çalışıyor.
VSCode, standart havuzlarda olmayan bir paket değildir. Ek olarak,
.debpaketi VSCode sitesinden indirebilirken, yalnızca
amd64. Unutmayın, şık küçük Pi4'ümüz bir ARM makinesidir, bu yüzden bu işe yaramaz. Neyse ki İnternet yardımsever insanlarla doludur ve böyle bir kişi VSCode'un kolay kurulumunu gerçekleştirmek için gerekli tüm komut dosyalarını oluşturmuştur .
Pi4'te şu adımları izleyin:
curl -s https://packagecloud.io/install/repositories/headmelted/codebuilds/script.deb.sh | sudo bash
curl -L https://code.headmelted.com/installers/apt.sh | sudo bash
code-oss .
Veri bilimiyle ilgileniyorsanız, Jupyter Notebook'un Pi4'te oldukça iyi çalıştığını not etmekten mutluluk duyacaksınız. Elbette gerçekten iPad Pro arayüzünü tercih ediyorsanız, en sevdiğim uygulamalardan biri olan Juno Connect'i de kullanabilirsiniz . Juno Connect, iPad Pro'nuzdan uzaktaki bir Jupyter Notebook sunucusuna, çoğunlukla bulutta bağlanmanıza tam anlamıyla yardımcı olur.
Jupyter Notebook'u kurmak için, bunu Pi4'ünüzdeki komut satırından yapın:
sudo pip3 install jupyter
Jupyter Notebook sunucusunu Pi4'te başlatmak için şunu yapın:
jupyter notebook —no-browser
Juno Connect uygulamasından sunucuya bağlanmak için:
localhostve
8888bunlar varsayılanlar
Yakın zamanda Jupyter Notebook sunucusunu doğrudan iPad'in üzerine getiren Juno'yu piyasaya sürdüler. Bu harika bir uygulama ancak Pi4 ile Jupyter Notebook'un tamamını Pi4'e, istediğiniz herhangi bir kitaplıkla yükleyebilir ve ona bağlanmak için Juno Connect'i kullanabilirsiniz.
Jupyter Notebook'un da pek çok farklı programlama dilini desteklemesi gerçekten güzel! Bunu Ruby ve Go dahil olmak üzere farklı "çekirdekler" aracılığıyla yapar. Jupyter Notebook, hesaplamaları ve simülasyonları çalıştırmanın hızlı ve kolay bir yoludur.
Pi4, öncekinden büyük bir gelişme ama mükemmel olmaktan uzak. Pi4'ü geliştirme için kullanırken bilmeniz gereken bazı şeyler:
Bununla neler yapabileceğinizi biraz önce kazıdım. Pi4 4GB, en güçlü geliştirme makinesi olmayabilir ve ARM üzerinde çalışır, ancak kompakt, genişletilebilir, dahili wifi ve Bluetooth BLE ile 4 USB bağlantı noktasına sahiptir. Ek olarak, her şey bir microSD kart üzerindedir ve istediğiniz ortamla kolayca başka birini değiştirebilirsiniz.
Öyleyse, farklı ortamlardan birkaç microSD ile çantanıza bir tane koyun ve tam anlamıyla tüm geliştirme makinelerinizi gittiğiniz her yere götürebilirsiniz!
Pi4 için bir şeyler bir araya getirmeye çalışırken ve bu yazıyı yazarken bu sitelerden bol miktarda yardım aldım.
Yazılımın özü, kullanılabilir iş bağlamı ve sorunları ile ilgilenmek ve bunları çözmektir. Günümüzün kurumsal iş alanı genellikle büyüyen/değişen büyük ve karmaşıktır - ve bu geliştirmeyi kabul eden yazılım.
NGINX Sunucu Güvenliğinizi nasıl güvence altına alacağınıza dair kısa bir kılavuz, giderek daha önemli hale geliyor. Modern yazılımlar, güvenli yazılım geliştirmemize yardımcı olma konusunda giderek daha iyi hale geliyor, ancak çoğunlukla ürünlerimiz için daha fazla güvenlik elde etmek için ekstra çaba sarf etmemiz gerekiyor.
Kasım 2020'nin başlarında SalesForce, açıklanamayacak şekilde JARM adlı yeni bir aktif TLS parmak izi alma aracını duyurdu. JARM'ın temeli, bir hedef sunucu özel olarak hazırlanmış çeşitli farklı TCP "İstemci merhaba" paketleri kullanılarak tarandığında, elde edilen yanıtların birleştirilip, paylaşılan veya benzer bir uygulama veya sunucunun göstergesi olan bir parmak izi sağlamak için karma hale getirilebilmesidir. yığını.
Harika geliştiriciler yapan teknik olmayan şeyler Bir süredir bu makaleyi yazmayı erteliyorum - yazmak için hiç nitelikli hissetmedim. Bugün onu yazma zamanının geldiğini düşündüm.
Teknoloji endüstrisindeki bir pozisyon için mülakat yaparken, herhangi bir teklif değerlendirilmeden önce genellikle en az üç tur mülakattan geçeceksiniz. Mermiler genellikle şuna benzer: Eğer öyle düşünüyorsan, yanılıyorsun.
Pragmatik Programcı ilk olarak 1999'da yayınlandı ve o zamandan beri tüm zamanların en iyi programlama kitabı seçildi. Yazarlar Andy Hunt ve David Thomas, Agile Manifesto'nun orijinal yazarları arasındaydı ve bazı ciddi referanslara sahipler.