DataIncrement 2 - resolusi konflik, TRIZ dalam pengembangan nyata

Terakhir kali, dari komentar ternyata dua masalah khusus dari proyek, yang banyak terima kasih kepada pengguna acuh tak acuh. Masalah pertama adalah kurangnya sertifikat SSL di situs. Dan kedua, mengungkapkan kata sandi akses kepada orang lain adalah ide yang sangat meragukan.

Solusi untuk masalah pertama adalah murni teknis - memasang sertifikat gratis tidak menimbulkan banyak kesulitan.

Tetapi solusi untuk masalah kedua - untuk mengecualikan pengungkapan pengaturan untuk menghubungkan ke database Anda - adalah pertanyaan.

Biarkan saya mengingatkan Anda bahwa esensi dari proyek ini adalah klien online untuk database mysql. Pertanyaan kunci - menghubungkan ke database, segera menyebabkan beberapa kesulitan:

  1. Pengungkapan parameter koneksi basis data;
  2. Bahkan jika parameter diungkapkan, itu bukan fakta bahwa Anda dapat terhubung karena pembatasan administratif, misalnya, hanya akses lokal ke database yang diizinkan.

Dalam situasi ini, sebuah kontradiksi teknis (TP) terpotong di wajah dalam sistem triz. Diperlukan untuk mengungkapkan parameter untuk terhubung, tetapi pada saat yang sama tidak mungkin untuk mengungkapkan parameter untuk keamanan. Selain itu, pengungkapan parameter tidak menyelesaikan kompleksitas kedua - adanya pembatasan administratif.

Dalam trize, salah satu metode favorit saya adalah metode Hasil Akhir Ideal (RBI). Ini adalah metode terkuat yang memungkinkan orang yang tidak takut untuk berpikir itu akan tampak tidak masuk akal, tetapi itu adalah hal yang kadang-kadang memungkinkan kita untuk mencapai hasil yang diinginkan, di mana kelihatannya ini tidak mungkin sama sekali.

Jadi, dalam triz, secara mental saya bisa membalikkan tugas. Dan mulailah memecahkan masalah dari ujung yang lain.

  • Itu tadi. Situs ini ingin terhubung ke basis data internal pribadi Anda, dan ingin melakukan ini tanpa mengungkapkan kata sandi akses (hasil akhir yang ideal).
  • Dan jika sebaliknya. Basis data itu sendiri ingin terhubung ke situs pihak ketiga, tetapi tidak dapat melakukan ini karena batasan administrasi.

Di satu sisi ternyata sebuah lagu (Anda berada di darat, saya di laut ... kita tidak bisa bertemu dengan cara apa pun). Di sisi lain, ada dua kekuatan yang ingin bertemu, tetapi tidak bisa melakukan ini.

Akan terlihat daratan apa, laut apa? Dan di sini database dan server. Tapi tunggu dulu. Kita semua tahu bahwa sering terjadi bahwa seorang gadis menyukai anak laki-laki dan sebaliknya gadis yang sama menyukai anak ini. Mereka takut mengambil langkah satu sama lain. Saya tidak bisa melakukannya sendiri. Ini tidak mungkin. Tapi tiba-tiba pacar yang sama tiba-tiba muncul. Pacar memperkenalkan dan membawa dua hal pemalu bersama. Dan kemudian semuanya dengan sendirinya entah bagaimana ternyata.

Penting untuk dicatat di sini bahwa kemunculan kekuatan ketiga sangat diperlukan. Sama seperti dalam triz - Anda perlu memasukkan kekuatan ketiga ke dalam sistem (sistem dua kekuatan dianggap tidak lengkap) dan menyelesaikan segitiga. Jaksa bertindak sebagai kekuatan ketiga dan membawa anak laki-laki dan perempuan itu.

Contoh lain dari politik. Ada Jerman yang ingin membeli bahan bakar yang lebih murah. Ada Iran yang ingin menjual bahan bakar ke Jerman. Tetapi Jerman memiliki batasan administrasi yang ketat pada pasokan bahan bakar dari Iran. Kami menyelesaikan sistem dua kekuatan menjadi segitiga lengkap. Kami memperkenalkan kekuatan ketiga - ini adalah Rusia. Yang dapat berinteraksi dengan Jerman dan Iran. Akibatnya, Jerman berinteraksi sempurna dengan Iran, melalui transportasi yang diwakili oleh Rusia.

Jadi dibutuhkan kekuatan ketiga. Kami mendorong kekuatan ketiga ke dalam sistem yang tidak lengkap dari database dan klien. Kami akan menggunakan driver tertentu sebagai transportasi, yang akan memenuhi peran transmisi (kata di sini tentu kasar, tetapi cukup tepat, jika Anda tidak fokus pada kekasaran).

Kami mencantumkan persyaratan untuk transportasi pengemudi kami. Sebenarnya, hanya ada dua persyaratan:

  1. Ini harus berinteraksi tanpa batasan dengan klien dan database, bertindak sebagai transportasi
  2. Harus dapat terhubung ke database

Mari kita lihat persyaratan pertama. Dua kekuatan membutuhkan hal yang sama. Yaitu: Anda perlu mengirim permintaan dan sebaliknya menerima set data untuk ditampilkan. Secara alami, Internet digunakan sebagai saluran transmisi data.

Mari kita lihat persyaratan kedua. Menghubungkan ke database hanya mungkin di sisi database dan tidak ada yang lain. Jadi pengemudi harus berada di sisi database atau dapat terhubung ke sana, dengan mempertimbangkan batasan administrasi akun. Apa yang biasanya default, mungkin. mysql digunakan untuk aplikasi web.

Dengan persyaratan di atas, ternyata cukup bagi saya untuk menulis penerjemah skrip pertanyaan sederhana ke database dan mengembalikan hasilnya sebagai array string. Dan letakkan di suatu tempat di sisi database. Saya mengambil php karena saya bisa dan menulis dua puluh baris.

Kode


header('Content-Type: text/html; charset=utf-8'); # Key $pass = 'KEY_PASS_FROM_DATAINCREMENT'; //change for youself # Connect parametres to mysql database $host = 'LOCALHOST'; //change for youself $user = 'USERNAME'; //change for youself $password = 'PASSWORD'; //change for youself $database = 'DATABASE_NAME'; //change for youself # Access if ( !isset($_POST['query']) ) die( 'no query' ); if ( @$_POST['pass'] != md5($pass) ) die( 'no pass' ); // if ( $_SERVER['REMOTE_ADDR'] != '185.229.9.9' ) die( 'no ip' ); # Connect $mysqli = new mysqli($host, $user, $password, $database); if ( $mysqli->connect_error ) { die( 'no connect: ' .$mysqli->connect_error ); } # Character $mysqli->set_charset( $mysqli->query("SHOW VARIABLES LIKE 'character_set_database'")->fetch_object()->Value ); # Query & Return if ( $result = $mysqli->query($_POST['query'], MYSQLI_USE_RESULT) ) { for ( $rows = array(); $r = $result->fetch_array(MYSQLI_ASSOC); $rows[] = $r ); $rows = json_encode($rows); $rows = gzdeflate($rows, 9); die( $rows ); } die( $mysqli->error ); 

Ini adalah driver sederhana. Sekarang skrip ini tetap ditempatkan di suatu tempat di situs Anda di tempat yang sewenang-wenang. Dan daftarkan driver ini di klien - dataincrement.com menyatakan sebagai koneksi ke database-nya.

Dengan demikian, ternyata terhubung ke database tanpa mengungkapkan parameter koneksi pada prinsipnya. Dan juga melewati batasan administrasi. Selain itu, pengemudinya ternyata sangat sederhana dan dapat dimengerti sehingga dapat dengan mudah dimodifikasi sesuka hati dan diimplementasikan secara independen dalam bahasa lain, jika perlu. Misalnya, Anda dapat menambahkan riwayat kueri atau membatasi akses hanya dari ip tertentu secara harfiah dalam beberapa baris tambahan.

Kesimpulan


Dalam contoh ini, saya mencoba menunjukkan kekuatan trize dalam menyelesaikan kontradiksi yang tampaknya paradoks. Saya percaya bahwa akal sehat dan konstruksi logis yang menjadi dasar dari trize ini dan ilmu logika harus cepat atau lambat menggantikan dominasi umat gereja, penginjil dan propagandis yang tumbuh di rumah. Bagi siapa pun bisnis bukanlah misi, atau proyek adalah keyakinan pada semua yang baik versus semua yang buruk.

Source: https://habr.com/ru/post/id427723/


All Articles