Ditulis oleh Lewis Cianci✏️
Jadi, anda seorang pembangun JavaScript? Senang mendengar — pada pendapat anda apakah kod ini dikembalikan? Dan ya, ini soalan muslihat:
function returnSomething() { return { name: 'JavaScript Expert' contactMethod: 'Shine batsign at sky' } }
Dalam hampir mana-mana bahasa lain — C#, Java, senarai diteruskan — kami akan mendapatkan kembali objek dengan Pakar JavaScript. Dan anda akan dimaafkan kerana berfikir bahawa dalam JavaScript, kami akan mendapatkan kembali hasil yang sama.
Walau bagaimanapun, lawakkan saya, dan masukkan ini ke dalam konsol pembangunan anda, dan kemudian laksanakan fungsi tersebut. Hampir sukar dipercayai, ia kembali tidak ditentukan.
Apabila perkara tidak sesuai dengan rancangan
Bekerja sebagai pembangun perisian bermakna anda bertanggungjawab ke atas cara apl anda berfungsi, sama ada ia berfungsi dengan baik atau teruk. Kekangan utama dalam hal itu ialah alat yang anda putuskan untuk digunakan. Jika anda memahami perkara yang anda gunakan, diharapkan anda akan membuat pilihan yang baik dalam cara anda mereka bentuk perisian anda.
JavaScript adalah unik kerana ia merupakan bahasa pilihan ramai pembangun perisian baharu. Ingin menulis aplikasi mudah alih? Hanya gunakan React Native dan JavaScript. Apl desktop? React Native dan JavaScript. Fungsi awan untuk dijalankan di suatu tempat? Node.js, dan, anda rasa, JavaScript.
Walau bagaimanapun, disebabkan tempoh JavaScript telah wujud, ia mempunyai bahagian yang saksama dalam senapang kaki dan gotcha. Sebahagian daripada ini berkisar daripada yang agak menggelikan kepada yang tiada kod-saya-berfungsi-dan-saya-tidak-tahu-mengapa keterukan.
Dan, walaupun kita hidup pada zaman ketika Internet Explorer 6 berada di zaman kegemilangannya, sudah terlambat untuk pergi dan cuba membetulkan beberapa keputusan reka bentuk ini, kerana kita akan memecahkan terlalu banyak web. Jika itu berlaku pada masa itu, bayangkan jika kita mencuba hari ini! ??
Jadi, bagaimanakah JavaScript tidak berfungsi dengan cara yang kita jangkakan? Mari lihat.
Suntikan Titik Bertitik Automatik (ASI)
Contoh yang disenaraikan di awal diterima oleh jurubahasa JavaScript tetapi tidak memberikan hasil yang diharapkan. Sebabnya adalah kerana Automatic Semicolon Injection.
Sesetengah bahasa, seperti C#, bersifat dogmatik tentang menamatkan setiap baris dengan koma bertitik. JavaScript juga menggunakan koma bertitik untuk menunjukkan penghujung baris, tetapi koma bertitik sebenarnya adalah pilihan. Secara pilihan, ini bermakna JavaScript akan menggunakan satu set peraturan yang kompleks untuk menentukan sama ada koma bertitik sepatutnya pergi ke sana atau tidak.
Dalam contoh di awal, kerana kurungan pembukaan tidak berlaku pada baris yang sama dengan pemulangan, ASI muncul satu di sana untuk kita. Jadi, setakat JavaScript berkenaan, kod kami sebenarnya kelihatan seperti ini:
function returnSomething() { return ; // <p>Cara untuk mengelakkan perkara ini adalah dengan meletakkan kurungan pembukaan pada baris yang sama sebagai pemulangan. Dan, walaupun koma bertitik secara teknikalnya adalah pilihan dalam JavaScript, ia akan merugikan anda dalam jangka panjang untuk bekerja dengan konsep itu. </p><p>Jika anda mempunyai temu duga, dan anda perlu menulis JS, dan anda menulisnya tanpa koma bertitik berdasarkan rasional "tetapi ia adalah pilihan", akan ada banyak kertas yang dikocok dan ketawa. Cuma jangan buat.</p> <h2> Tatasusunan dengan kunci bukan urutan </h2> <p>Mari bayangkan kita mempunyai tatasusunan mudah:<br> </p> <pre class="brush:php;toolbar:false">function returnSomething() { return { name: 'JavaScript Expert' contactMethod: 'Shine batsign at sky' } }
Kami tahu kami boleh pop, tolak, tambah dan melakukan apa sahaja yang kami suka dengan tatasusunan. Tetapi kami juga tahu bahawa JavaScript, seperti bahasa lain, membolehkan kami mengakses elemen tatasusunan mengikut indeks.
Walau bagaimanapun, perkara yang luar biasa tentang JavaScript ialah anda juga boleh menetapkan elemen mengikut indeks tatasusunan apabila tatasusunan masih belum mencapai indeks itu:
function returnSomething() { return ; // <p>Saya ada soalan yang bagus untuk anda — Apakah panjang tatasusunan apabila anda hanya menetapkan tiga elemen? Mungkin secara tidak intuitif, ia adalah 101. Di satu pihak, adalah munasabah bahawa item tatasusunan 2 hingga 99 tidak ditentukan, tetapi di sisi lain, kami hanya menetapkan tiga objek, bukan 100. </p> <p><strong>Kenapa ia penting?</strong> <br> Mungkin mata anda keluar dari kepala anda dan anda berkata "Baiklah Lewis, anda secara manual menetapkan item ke dalam tatasusunan dan melihat roda tercabut; itu membuatkan anda pelik, bukan JavaScript”. </p> <p>Saya akan faham kedudukan itu. Tetapi bayangkan seketika anda melakukan sesuatu dalam gelung bersarang untuk, dan anda memilih lelaran yang salah atau membuat pengiraan dua tingkat. </p> <p>Pada satu ketika, proses pemikiran "Mengapa saya mendapat hasil yang diharapkan, hasil yang dijangka, hasil yang tidak ditentukan, yang dijangkakan" akan bertukar kepada kegilaan, dan tidak lama lagi akan menangis! Sedikit yang anda tahu tatasusunan anda berkembang secara ajaib untuk menampung perkara yang anda cuba lakukan. </p> <p>Satu-satunya masalah ialah, anda cuba melakukan perkara yang salah. </p> <p>Untuk membandingkan dengan bahasa lain seperti C# (tanpa sebab tertentu), tatasusunan mempunyai panjang tetap. Apabila anda membuat tatasusunan, anda perlu menentukan panjang. Walaupun untuk objek koleksi dinamik lain, seperti Senarai<t>, anda tidak boleh menetapkan ke dalam indeks yang tidak ditentukan. Jadi, jika gelung bersarang anda cuba menulis ke indeks yang tidak ditetapkan sebelum ini, program anda akan membuang. </t></p> <p>Pengecualian tidak bagus, tetapi ini mungkin perkara yang betul untuk dilakukan. Maksud saya, adakah anda bermaksud untuk mencipta susunan keju Swiss? Adakah sesiapa yang bermaksud berbuat demikian? Semoga tidak. </p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954908866066.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> <em>Ia hanya susunan keju Swiss jika pembangunnya dari Switzerland. Jika tidak, ia hanyalah pengaturcaraan buruk yang berkilauan.</em></p> <h2> Menambah sifat pada primatif diabaikan </h2> <p>Kami tahu bahawa dalam JavaScript kami boleh menetapkan fungsi baharu kepada prototaip. Jadi, kita boleh memberikan rentetan atau tatasusunan ✨kuasa istimewa✨. Sudah tentu, berbuat demikian adalah amalan yang buruk kerana ini bermakna prototaip rentetan kami akan berkelakuan berbeza kepada orang lain, yang sudah menyebabkan sakit hati yang tidak terperi bagi kebanyakan pembangun. </p><p>Jadi, kita boleh lakukan ini sebagai contoh:<br> </p> <pre class="brush:php;toolbar:false">function returnSomething() { return { name: 'JavaScript Expert' contactMethod: 'Shine batsign at sky' } }
Dan kemudian kita boleh mencipta objek rentetan:
function returnSomething() { return ; // <p>Dan ia akan kembali palsu. </p> <p>Memang comel kita sentiasa boleh menyekat fungsi kita secara rawak ke dalam pelaksanaan yang ditentukan kilang tentang cara rentetan boleh bertindak. </p> <p>Pasti, semua orang yang baik itu patah tulang belakang dan menghabiskan berpuluh-puluh ribu jam mentakrifkan JavaScript dalam spesifikasi TC39, tetapi jangan biarkan perkara itu menghalang anda daripada melakukan fungsi rawak seperti yang anda fikirkan patut. </p> <p>Jika kami tidak berpuas hati dengan jenama kesakitan itu, kami juga boleh menetapkan fungsi baharu secara rawak kepada objek kompleks seperti yang kami mahu, memastikan kod kami akan menjadi bentuk karut yang sangat khusus, hanya difahami oleh diri sendiri dan Tuhan : <br> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954908998836.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> <br> Mengarang objek kami seperti ini sememangnya idea yang mengerikan, tetapi kerana kami komited terhadap pengkhianatan ini, JavaScript mewajibkan kami dalam permintaan kami. TestObject kami mengambil fungsi baharu yang telah kami masukkan ke dalamnya. </p> <p>Walau bagaimanapun, kemahuan baik habis dengan objek primatif, dengan cara yang mengejutkan: <br> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909074477.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> <br> Jurubahasa mengakui percubaan kami untuk menetapkan fungsi ke dalam rentetan primatif. Ia juga menggemakan fungsi itu kembali kepada kami. Tetapi kemudian, apabila kita cuba memanggilnya, kita mendapat TypeError: testString.onlyFalse bukan fungsi. Jika tidak mungkin untuk melakukan ini, biasanya anda menjangkakan ini akan dilakukan pada penugasan, bukan pada panggilan fungsi. </p> <p><strong>Kenapa ia penting?</strong> <br> Baik atau buruk, JavaScript ialah bahasa yang sangat fleksibel dan dinamik. Fleksibiliti ini membolehkan kami mengarang fungsi yang tidak boleh dilakukan dalam bahasa lain. Jika sesuatu tidak berfungsi, maka kita harus mengharapkan pengecualian. JavaScript mengambil arahan yang janggal ini dan bersikap seperti "eh, okey" dan kemudian melupakannya mengubah jangkaan asas ini.</p> <h2> Jenis Paksaan </h2> <p>Dalam bahasa lain yang ditaip kuat, kami perlu menentukan jenis data yang kami simpan sebelum kami dapat menyimpannya. JavaScript tidak mempunyai jenis pengehadan yang sama ini, dan ia dengan senang hati akan menolak objek daripada jenis yang ditentukan untuk cuba membuatkan mereka bermain bagus bersama-sama. </p><p>Di satu pihak, ia menjauhkan kita daripada menghantar pembolehubah ke sana ke mari kepada jenis masing-masing. Jadi ia mudah: <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909188290.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"><br> Ia juga sama untuk boolean: <br> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909211047.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> <br> Pendekatan ini benar-benar waras dan sah sehingga kita ingin melibatkan diri kita dalam ritual tabu yang dikenali sebagai "penambahan." Apabila kita cuba menambah "1" dan 1 bersama-sama, apa yang berlaku? Apakah cara paksaan jenis itu pergi? <br> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909319865.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> <br> Kegembiraan <del>kegilaan</del> berganda apabila kita membawa bool ke parti: <br> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909445100.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> <br> Oh — adakah kerana bool entah bagaimana nombor di bawah tudung? <br> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909562905.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> Tidak. Ia adalah boolean. JavaScript sedang mencukur tepi petak yang menjengkelkan untuk memasukkannya ke dalam lubang bulat itu kerana alasan. </p> <p><strong>Kenapa ia penting?</strong> <br> Apabila anda melakukan sesuatu yang asas seperti menambah nombor bersama-sama, keputusan yang berbeza-beza boleh mewujudkan beberapa pepijat pelik. Ini adalah peringatan yang baik untuk berpegang kepada triple equals (===) semasa membuat perbandingan, kerana zapping antara jenis mungkin tidak memberikan anda hasil yang diharapkan.</p> <h2> Fungsi mengangkat </h2> <p>Dengan bahasa yang kita gunakan hari ini, aspek penting ialah sesuatu yang dipanggil "fungsi angkat". Pada asasnya, ini bermakna anda boleh menulis fungsi anda dalam fail anda di mana-mana yang anda suka dan anda akan dapat memanggilnya sebelum fungsi diisytiharkan:<br> </p> <pre class="brush:php;toolbar:false">function returnSomething() { return { name: 'JavaScript Expert' contactMethod: 'Shine batsign at sky' } }
Ia berguna kerana kami tidak perlu menyusun semula kod kami secara manual untuk menjadikannya berfungsi.
Tetapi, terdapat lebih daripada satu cara untuk menerangkan fungsi. Dalam contoh ini, kami menggunakan pengisytiharan fungsi untuk berbuat demikian. Kita juga boleh menggunakan ungkapan fungsi:
function returnSomething() { return ; // <p><strong>Kenapa ia penting?</strong> <br> Tiada perbezaan besar antara mengisytiharkan fungsi dalam mana-mana kes, tetapi jika anda salah memilih, anda tidak akan dapat memanggil fungsi anda melainkan anda memanggilnya selepas anda mengisytiharkannya.</p> <h2> Null ialah objek </h2> <p>Dalam bahasa lain, sifat objek boleh ditetapkan atau ia boleh menjadi batal. null menunjukkan bahawa harta itu tidak diberikan. Ia mudah untuk menyamakan dalam kepala kita — sama ada terdapat objek di sana, atau ia adalah batal. Kami juga boleh menetapkan sifat kembali kepada null jika kami mahu. </p> <p>JavaScript merumitkan landskap ini dengan mempunyai null dan juga undefined. Tetapi semuanya sama, bukan? Anda sama ada mempunyai bola di tangan anda, atau anda tidak. </p><p>Tidak menghairankan, semuanya tidak sama. Dalam JavaScript, null menunjukkan kekurangan nilai yang disengajakan, manakala undefined menunjukkan kekurangan nilai yang tersirat. Jadi, sama ada ia disengajakan, eksplisit atau ditulis di langit, hakikatnya tiada nilai = tiada nilai, bukan? </p> <p>Sekali lagi, malangnya, itu bukan cara persamaan itu berfungsi. </p> <p>Nah, apakah jenis yang tidak ditentukan? <br> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909681428.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> </p> <p>Baiklah, dan apakah jenis null? <br> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909737640.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> </p> <p>? ia adalah objek. Jadi dalam JavaScript, jenis objek kompleks dan null adalah sama — kedua-duanya adalah objek: <br> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909893812.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"> </p> <p><strong>Kenapa ia penting?</strong> <br> JavaScript tidak mempunyai sistem semakan jenis yang mantap terbina dalam dan hanya terdapat segelintir jenis primatif untuk dipilih. Jadi, menggunakan typeof untuk memahami apa yang ada dalam pembolehubah kami boleh menjadi rumit. Jika pembolehubah kami memegang objek yang sah, maka kami akan mendapat objek. Tetapi jika ia batal, kami masih akan mendapat objek. Adalah berlawanan intuitif untuk berfikir bahawa rujukan nol ialah objek.</p> <h2> Kesimpulan </h2> <p>Tiada dipersoalkan populariti besar JavaScript hari ini sebagai bahasa. Apabila masa berlalu dan ekosistem lain seperti npm terus menjadi tuan rumah sejumlah besar pakej, JavaScript hanya akan terus meningkat dalam populariti. </p> <p>Tetapi apa yang dilakukan sudah selesai. Tidak kira betapa peliknya null ialah objek, atau JavaScript akan memunculkan koma bertitik di tempat yang sesuai, sistem ini mungkin tidak akan ditamatkan, diubah atau dialih keluar. Secara anekdot, saya akan mengatakan bahawa jika Suntikan Titik Bertitik Automatik dimatikan semalaman, ia mungkin akan menyebabkan gangguan global yang lebih besar daripada kemas kini CrowdStrike. </p> <p>Sudah tentu, menukar salah satu daripada ini akan mendatangkan malapetaka di web. Ia sebenarnya lebih selamat, dan mungkin lebih praktikal, untuk menyedarkan pembangun tentang kebiasaan bahasa tertentu ini daripada benar-benar kembali dan menyelesaikan masalah asal. </p> <p>Jadi, pergi dan buat pilihan yang baik, dan jangan lupa gunakan koma bertitik!</p> <hr> <h2> LogRocket: Nyahpepijat ralat JavaScript dengan lebih mudah dengan memahami konteks </h2> <p>Kod nyahpepijat sentiasa menjadi tugas yang membosankan. Tetapi semakin anda memahami kesilapan anda, semakin mudah untuk membetulkannya.</p> <p>LogRocket membolehkan anda memahami ralat ini dengan cara baharu dan unik. Penyelesaian pemantauan bahagian hadapan kami menjejaki penglibatan pengguna dengan bahagian hadapan JavaScript anda untuk memberi anda keupayaan untuk melihat dengan tepat perkara yang dilakukan pengguna yang membawa kepada ralat.</p><p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172954909986001.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Six things you may not know about JavaScript"></p> <p>LogRocket merekodkan log konsol, masa muat halaman, surih tindanan, permintaan/tindak balas rangkaian perlahan dengan badan pengepala, metadata penyemak imbas dan log tersuai. Memahami kesan kod JavaScript anda tidak akan menjadi lebih mudah!</p> <p>Cuba secara percuma.</p>
Atas ialah kandungan terperinci Enam perkara yang anda mungkin tidak tahu tentang JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma