Daha çox

Model, Edit rejimində olmadan işləyərkən ModelBuilder -də Iterate Field Values ​​xətası varmı?

Model, Edit rejimində olmadan işləyərkən ModelBuilder -də Iterate Field Values ​​xətası varmı?


Düşünürəm ki, bəlkə də bir ModelBuilder xətası tapmışam.

Kiminsə razılaşıb -razılaşmadıqlarını görmək üçün prosedurumu yerinə yetirməsi və razılaşıb -razılaşmadıqlarını görmək və əgər razılaşsa da, hələ də ModelBuilder -dən hələ də istifadə edən bir həlli sınamaq və təklif etmək, bu modeli yalnız redaktə üçün açıq olduğu müddətdə işlətməkdən başqa mümkün ola bilərmi?

ArcPy istifadə edərək bunu necə edəcəyimi artıq bilirəm, amma ModelBuilder -dən də istifadə etməyin nə qədər asan olduğunu göstərməyə çalışırdım.

Bir həll yolu olmayan bir cavabı qəbul etməkdən məmnunam, çünki həqiqətən aradığım şey prosedurumu və müşahidə olunan nəticələrimi sağlam bir şəkildə yoxlamaqdır. Bir səhv olarsa, NIM nömrəsini bilmək istərdim və bunun ModelBuilder -də ArcGIS 10.3 -ün Masaüstü üçün ArcMap və ArcGIS Pro tətbiqlərindən hər ikisindən və ya hər ikisindən Sabit olub olmadığını bilmək istərdim.

Masaüstü və Fayl Geodatabase üçün ArcGIS 10.2.2 istifadə edirəm. Üstünə yazmaq üçün Geoprosessing mühitim var.

  1. FishnetFC adlı 1x1 ölçülü hüceyrələri olan 2x2 bir balıq şəbəkəsi yaratmaq üçün Fishnet Yarat istifadə etdim, Ad adlı bir sahə əlavə etdim və atribut cədvəlinin aşağıdakı görünüşə sahib olması üçün bu sahəni yenilədim. Unikal vallarla dolu hər hansı bir mətn sahəsinə malik hər hansı bir çoxbucaqlı xüsusiyyət sinifindən istifadə etməklə sınamaq yaxşı olar.

  1. Daha sonra parametrləri olmayan modeli hazırladım

  1. Sahə dəyərlərini təkrarlamaq alətini aşağıdakı kimi konfiqurasiya etdim

  1. Seçim alətini aşağıdakı kimi konfiqurasiya etdim

  1. Dəyər dəyişənləri Seçmə vasitəsinin ön şərtidir, amma bunun vacib olduğu görünmür, çünki onsuz da sınamışam.
  2. Modeli işlədərkən açıq ikən gözlənildiyi kimi FC1, FC2, FC3 və FC4 adlı dörd xüsusiyyət sinfi istehsal edir

Çıxış belədir:

İcra olunur (Sahə Dəyərlərini Təkrarla): IterateFieldValues ​​C:  polygeo  test.gdb  FishnetFC Ad String false false # Başlama Saatı: 11 Noyabr 17:03:02 2014 Salı 11 Noyabr 17:03:02 2014 (Keçən Zaman: 0.06 saniyə) İcra (Seç): C:  polygeo  test.gdb  FishnetFC C:  polygeo  test.gdb  FC1 "Ad = 'FC1'" Başlama Saatı: 11 Noyabr 17 17:03:02 seçin 2014 tarixində uğur qazandı Sal 11 Noy 17:03:02 2014 (Keçən Zaman: 0.44 saniyə) İcra (Sahə Dəyərlərini Təkrarla): IterateFieldValues ​​C:  polygeo  test.gdb  FishnetFC Ad String false false # Başlama Saatı: 11 Noyabr 17:03:03 2014 -cü il 11 Noyabr 17: 03: 03 -də Uğurlandı (Keçən Zaman: 0.00 saniyə) İcra (Seç): C:  polygeo  test.gdb  FishnetFC C:  polygeo  test.gdb  FC2 "seçin = Ad 'FC2 '"Başlama vaxtı: 11 Noyabr Salı 17:03:03 2014 Noyabr 11 -də 17:03:03 2014 -cü ildə uğur qazandı (Keçən Zaman: 0.46 saniyə) İcra (Sahə Dəyərlərini Təkrarla): IterateFieldValues ​​C:  polygeo  test.gdb  FishnetFC Ad String false false # Başlama vaxtı: 11 Noyabr 17:03:03 2014 Noyabr 11 -də 17: 0 -da uğur qazandı 3:03 2014 (Keçən Zaman: 0.00 saniyə) İcra (Seç): C:  polygeo  test.gdb  FishnetFC C:  polygeo  test.gdb  FC3 "Ad = 'FC3'" Başlama Saatı: 11 Noyabr Çərşənbə axşamı 17:03:04 2014 Noyabr 11 -də 17:03:04 2014 -cü ildə uğur qazandı (Keçən Zaman: 0.44 saniyə) İcra (Sahə Dəyərlərini Təkrarla): IterateFieldValues ​​C:  polygeo  test.gdb  FishnetFC Ad String false false # Başlama vaxtı: Sal 11 Noy 17:03:04 2014 Noyabr 11, 17:03:04 tarixində uğur qazandı (Keçən Zaman: 0.00 saniyə) İcra (Seç): C:  polygeo  test.gdb  FishnetFC C:  polygeo  testini seçin. gdb  FC4 "Ad = 'FC4'" Başlama Saatı: 11 Noyabr 17:03:04 2014 11 Noyabr 17:03:05 tarixində müvəffəqiyyət qazandı (Keçən Zaman: 0.39 saniyə) İcra olunur (Sahə Dəyərlərini Təkrarla): IterateFieldValues ​​C:  polygeo  test.gdb  FishnetFC Adı String false false # Başlama vaxtı: 11 Noyabr 17:03:05 2014 11 Noyabr 17:03:05 tarixində uğur qazandı (Keçən Zaman: 0.00 saniyə)
  1. Modeli saxlayanda və bağladığımda, bu şəkildə işləməzdən əvvəl, yalnız FC1 və FC2 adlı iki xüsusiyyət sinifini istehsal edir - Düşünürəm ki, bu bir səhv olmalıdır!

Bu dəfə çıxış gözlənilmədən aşağıda göstərildiyi kimidir. Ulduzları (**) gözlədiyimdən kənarda qoydum.

İcra olunur: SelectByAttribute Başlama vaxtı: 11 Noyabr 17:04:34 2014 İcra (Sahə Dəyərlərini Təkrarla): IterateFieldValues ​​C:  polygeo  test.gdb  FishnetFC Ad String false false # Başlama Saatı: 11 Noyabr 17:04:34 2014 11 Noyabr Çar 17: 04: 34 -də əldə edildi (Keçən Zaman: 0.05 saniyə) İcra (Seç): C:  polygeo  test.gdb  FishnetFC C:  polygeo  test.gdb  FC1 "seçin = Ad '' FC1 ' "Başlama vaxtı: 11 Noyabr Salı 17:04:34 2014 Noyabr 11 -də 17:04:34 2014 -cü ildə uğur qazandı (Keçən Zaman: 0.28 saniyə) (Iterate Alan Dəyərləri): IterateFieldValues ​​C:  polygeo  test.gdb  FishnetFC Adı String false false # Başlama vaxtı: 11 Noyabr 17:04:34 2014 Noyabr 11 -də 17:04:34 tarixində uğur qazandı (Keçən Zaman: 0.00 saniyə) İcra olunur (Seçin): C:  polygeo  test.gdb  FishnetFC seçin C:  polygeo  test.gdb  FC2 "Ad = 'FC2'" Başlama Saatı: 11 Noyabr 17:04:34 2014, 11 Noyabr Çar 17:04:35 2014 (Keçən Zaman: 0.27 saniyə) İcra (Yenidən Sahə Dəyərləri): IterateFieldValues ​​C:  polygeo  test.gdb  FishnetFC Ad String false false # Başlama vaxtı: 11 Noyabr 17:04:35 2014 Noyabr 11 -də 17:04:35 tarixində uğur qazandı (Keçən Zaman: 0.00 saniyə) İcra (Seç): ** C:  polygeo  test.gdb  FishnetFC C seçin:  polygeo  test.gdb  FC1 "Ad = 'FC3'" ** Başlama Saatı: 11 Noyabr 17:04:35 2014 11 Noyabr 17: 04: 35 -də uğur qazandı (Keçən Zaman: 0.39 saniyə) İcra (Təkrar) Sahə Dəyərləri): IterateFieldValues ​​C:  polygeo  test.gdb  FishnetFC Ad String false false # Başlama Saatı: 11 Noyabr 17:04:35 2014 11 Noyabr 17: 04: 35 -də uğur qazandı (Keçən Zaman: 0.00 saniyə) İcra olunur (Seçin): ** C:  polygeo  test.gdb  FishnetFC C:  polygeo  test.gdb  FC1 "Ad = 'FC4'" seçin ** Başlama Saatı: Salı 11 Noyabr 17:04:35 2014 Uğurlandı at Tue Nov 11 17:04:36 2014 (Keçən Zaman: 0,45 saniyə) İcra (Sahə Dəyərlərini Təkrarla): IterateFieldValues ​​C:  polygeo  test.gdb  FishnetFC Ad String false false # Başlama Saatı: 11 Noyabr 17:04: 36 2014, 11 Noyabr 17: 04: 36 -da Başa çatdı 2014 (Keçən Zaman: 0,00 saniyə) 11 Noyabr 17: 04: 36 -da Uğurlandı 2014 (Keçən Zaman: 1,89 saniyə) ond)

Model Oluşturucu ilə işə başlayın

Model qurucu, vəzifələri avtomatlaşdırmaq üçün istifadə edilə bilən ArcMap -dəki bir xüsusiyyətdir. Xüsusilə toplu emal üçün faydalıdır. Obyektləri, alətləri və s. Sürükləyərək buraxaraq modeli ArcMap -da işlədərək model yarada bilərsiniz. Fayl yolları kimi öz xüsusiyyətlərinizi modelinizə daxil edə bilərsiniz və ya modelinizin daha çevik olması üçün istifadəçidən məlumat istəməsini istəyə bilərsiniz. Modelinizi saxlaya və başqaları ilə paylaşa bilərsiniz. Necə başlayacağınızı göstərmək və bəzi model qurucu funksiyalarını nümayiş etdirmək üçün bir neçə nümunə üzərində işləyək. Nümunələri izləmək və sınamaq üçün lazım olan bütün sənədlər http://maps.library.utoronto.ca/datapub/modelbuilder/ModelBuilder.zip saytından yükləyə biləcəyiniz .zip faylında tapılmışdır. Aşağıdakı nümunələr üçün bu fayllar C: Test qovluğuna çıxarılır.


EF Modelindən tələb olunan xüsusiyyətlərin silinməsi, çünki yalnız oxunur

EF modellərini yalnız oxumaq üçün istifadə edən kiçik bir məlumat modeli olan bir layihəm var.

Modellərdə sütunların tam dəstini istəmirəm, ancaq sıfırlanmayan və heç bir standart dəyərləri olmadıqda onlardan istifadə etməyim tələb olunur.

Belə sütunların daxil edilməsindən necə qaça bilərəm? EF-ni məlumat modelində sütunları varlıqlardan çıxarmağa imkan verən bəzi oxumaq rejiminə qoya bilərəmmi?

Bunu etmək istəməyimin səbəbi, məlumat modellərimdəki sütunları yalnız ehtiyac duyduğum qədər azaltmaqla, modelin sorğularda geri qayıtması lazım olan sütunları azaldıram və sxem dəyişərsə məlumat istehlakçılarımın qırılma riskini azaldıram.

EDIT: Şemamda standart dəyərləri olmayan NOT NULL sütunları olan cədvəllər var. Deyə bildiyim qədər bu sütunları edmx -ə daxil etməyim tələb olunur. Vəziyyətimdə yalnız oxumaq üçün bir kontekst var, buna görə də bu sütunların mənim edmx-ə daxil edilməsini istəmirəm.

Sütunların məlumat modelində olmasını maneə törədə bilsəm, sxemi dəyişdirməkdən irəli gələn bir çox problemin qarşısını ala bilərəm. İndiyə qədər tapdığım yeganə həll sütunu olmayan "saxta" bir verilənlər bazasına işarə edərək datamodel qurmaqdır!


2 Cavab 2

Null == "obyekt" tipində sıfır xüsusiyyət halında bir səhv görürəm. Sıfır və ya obyekt olmadığını yoxlamalısınız :)

Daha az əhəmiyyətli? səhv, hər hansı bir obyektinizdə hasOwnProeprty düyməsini istifadə edə bilməyinizdir. Object.prototype.hasOwnProperty.call (obj, key) istifadə edərək bu problemi həll edə bilərsiniz.

Gördüyüm yalnız açıq optimallaşdırma, yoxlama növündən sonra hasOwnProperty yoxlamasını köçürməkdir. hasOwnProperty nisbətən bahalı bir funksiyadır, buna görə yəqin ki, bundan bəzi qazanclar görəcəksiniz. Gözləyirəm ki, bu, sizin üçün loopdan daha sürətli olduğu bilinən Object.keys etməkdən daha sürətli olmalıdır.

Köhnə brauzerlər üçün polyfilling trim etdiyinizi düşünürəm?

Bəzi ifadələrinizlə bağlı ciddi narahatlığım var:

Performans mənim maraqlandığım şeydir. Saniyədə min dəfə qaçmayacaq, amma böyük, dərin cisimlərə sahib ola bilər. Bunu sürətləndirməyin bir yolu varmı?

Bu doğrudursa, mənbədən başlamalısınız.

Verilənlər bazası performansı, demək olar ki, dolaşan məlumatların miqdarı, onu nə qədər boş yerə köçürməli olduğunuz və bu yerin nə qədər sürətli olması ilə əlaqədardır. (yaddaş ən sürətli yerdir)

Veriləriniz daha yığcamdırsa (yəni lazımsız olaraq sabit uzunluqlu sahələrdən istifadə etmirsinizsə), onda:

  • sorğularınız daha sürətli işləyir (daha az IO)
  • daha çox məlumatı yaddaşda saxlaya bilərsiniz
  • şəbəkə köçürmələri daha sürətli olur

Ən yaxşı performansı istəyirsinizsə, verilənlər bazası sxeminizi dəyişdirin.

İkinci seçim, dəyərləri müştəriyə qaytarmadan əvvəl verilənlər bazası tərəfində kəsməkdir. SQL -ə rtrim () əlavə etmək müştəri tərəfindəki hər hansı bir işləmə ehtiyacını aradan qaldıracaq.

Seçdiyiniz ən pis variantdır. müştəri trim idarə, bütün ağır iş sonra şəbəkə, verilənlər bazası, və indi browser edilir. İlk dəfə düzgün etmək, hər şeyin "əziyyət çəkmə" ehtiyacını aradan qaldıracaq.

JavaScript idarəçiliyinə gəldikdə, onun da problemləri var, işlənməyə ehtiyacı olmayan dəyərləri işlədir və səhvlər də təqdim edir. Yəqin ki, hər bir dəyəri yoxlamaq əvəzinə, sorğunun metadatalarını yoxlamalı və emala ehtiyacı olan sahələri müəyyən etməlisiniz. Başqa sözlə, əgər sorğu seçilmiş bir ad olsaydı, istifadəçilərdən gələn id kodunuz hər adı və hər bir şəxsiyyəti yoxlayır və bunların çoxu ola bilər. Bunun əvəzinə, ad sütununu yoxlamalı və String nəticələri olaraq təyin etməli, sonra ID sütununu yoxlamalı və nömrəli olaraq təyin etməlisiniz. Sonra, yalnız ad sahələrindəki dəyərləri emal etməlisiniz, hətta ID -də dəyərləri yoxlamamalısınız.

Nəhayət, ağ boşluq vacibdirsə nə olar. Cədvəldəki dəyər olarsa. doldurulmuş nömrələr, məsələn və ya. kimi formatlanmış bir sahə

4 aparıcı əhəmiyyətli ağ boşluğa malikdir. kodunuz səhvlər gətirir.

Nəticə budur ki, yalnız əhəmiyyətli məlumatları saxlamalısınız. Hər şeyi daha sürətli, daha kiçik və daha səmərəli edir.


17 Cavablar 17

StackOverflow, bu sual -cavabda bu dəqiq mövzu haqqında yaxşı bir müzakirə aparır. Ən çox qiymətləndirilən sualda kronoz qeyd edir:

Heç bir məlumatın olmadığını bildirmək niyyətindəsinizsə sıfırın qaytarılması ümumiyyətlə ən yaxşı fikirdir.

Boş bir obyekt məlumatların geri qaytarıldığını bildirir, null qaytarılması isə heç bir şeyin geri qaytarılmadığını açıq şəkildə göstərir.

Əlavə olaraq, sıfırın qaytarılması, obyektin üzvlərinə daxil olmağa çalışsanız, boş kodun vurgulanması üçün faydalı ola biləcək sıfır istisnası ilə nəticələnəcək - heç bir üzvə daxil olmağa cəhd etməyin heç bir mənası yoxdur. Boş bir obyektin üzvlərinə daxil olmaq uğursuz olmayacaq, yəni səhvlər açılmayacaq.

Şəxsən mən yerinə qoyulması lazım olan səhv işləmə miqdarını minimuma endirmək üçün sətirləri qaytaran funksiyalar üçün boş sətirləri qaytarmağı sevirəm. Bununla birlikdə, çalışdığınız qrupun eyni konvensiyaya riayət edəcəyinə əmin olmalısınız - əks halda bu qərarın faydaları əldə olunmayacaq.

Bununla birlikdə, SO cavabındakı plakatda qeyd edildiyi kimi, məlumatların geri qaytarılıb -qaytarılmayacağına heç bir şübhə olmaması üçün bir obyekt gözlənildiyi təqdirdə null qaytarılmalıdır.

Sonda işlər görməyin ən yaxşı yolu yoxdur. Komanda fikir birliyi yaratmaq, nəticədə komandanızın ən yaxşı təcrübələrini idarə edəcək.

Yazdığım bütün kodlarda null funksiyasından geri dönməkdən çəkinirəm. Təmiz Kodda oxudum.

Null istifadə problemi, interfeysdən istifadə edən şəxsin nullun mümkün bir nəticə olub olmadığını və bunu yoxlamalı olub olmadığını bilməməsidir, çünki null istinad növü yoxdur.

F# -də, bəzi (Şəxs) və ya heç biri ola biləcək bir seçim növünü geri qaytara bilərsiniz, buna görə zəng edən şəxs yoxlamalı olduqları aydındır.

Analoji C# (əleyhinə) nümunəsi "Try" dır. üsul:

İndi bilirəm ki, insanlar bunu söyləyiblər nifrət cəhd edin. model, çünki bir çıxış parametrinə sahib olmaq təmiz bir funksiyanın fikirlərini pozur, amma əslində fərqlənmir:

. və dürüst olmaq üçün bunu güman edə bilərsiniz hər .NET proqramçısı Sınaq haqqında bilir. model .NET çərçivəsində daxili istifadə edildiyi üçün. Yəni onlar sənədləri oxumaq lazım deyil nə etdiyini başa düşmək, mənim üçün bəzi puristlərin funksiyalara baxışından yapışmaqdan daha vacibdir (nəticənin ref parametri deyil, çıxış parametri olduğunu anlamaq).

TryFindPerson ilə gedərdim, çünki onu tapa bilməməyin tamamilə normal olduğunu göstərirsən.

Digər tərəfdən, zəng edənin heç vaxt mövcud olmayan bir şəxsiyyət nömrəsi verməsinin məntiqi bir səbəbi yoxdursa, yəqin ki, bunu edərdim:

. və sonra etibarsız olsaydı istisna edərdim. Alın. prefiks, zəng vuranın uğur qazanacağını bilir.

Nulllar, polimorfizmi məğlub etdikləri üçün obyekt yönümlü proqramlarda yöndəmsiz şeylərdir. Adətən, maddənin dəqiq növ və ya alt sinif olub-olmamasından narahat olmayaraq, müəyyən bir növün dəyişən istinadına sərbəst şəkildə foo çağıra bilərsiniz. Güclü yazılmış bir dil ilə hətta tərtibçidən zəngin düzgünlüyünü yoxlaya bilərsiniz. Bununla birlikdə, bir dəyişən null ehtiva edə bildiyindən, null -a bir mesaj çağıraraq iş vaxtı səhvinə düşə bilərsiniz ki, bu da sizə gözəl, dostluq yığın izi verəcəkdir.

Dəyişənin sıfır olması mümkündürsə, onu sıfır test kodu ilə əhatə etməyi unutmamalısan, belə ki, null varsa, doğru şeyi edərsən. Çox vaxt doğru şey bir çox kontekstdə eynidır, buna görə də çox yerdə oxşar kod yazırsınız - kodun təkrarlanması günahını törədirsiniz.

Nulllar bu cür problemlərin ümumi bir nümunəsidir və digərləri müntəzəm olaraq böyüyür. Say sistemlərində, həqiqi ədədlərin adi invariantlarını pozan əlavə kimi şeylər üçün xüsusi qaydaları olan sonsuzluqla məşğul olmalısınız. İş proqram təminatında ilk təcrübələrimdən biri, "sakin" olaraq adlandırılan, tam bilinməyən bir kommunal müştəri ilə idi. Bütün bunlar tipin adi davranışını dəyişdirməyi nəzərdə tutur.

Null və ya qəribə bir dəyəri qaytarmaq əvəzinə, zəng edənin gözlədiyi ilə eyni interfeysə malik olan Xüsusi Kassanı qaytarın.

Düşünürəm ki, ReverseString () geri çevrilmiş sətri qaytaracaq və Null -a keçilsə, bu, IllegalArgumentException atacaq.

Düşünürəm ki, FindPerson () NullObject Nümunəsini izləməli və ya hər zaman bir şey tapa bilsəniz bir şey tapmamaqla bağlı yoxlanılmamış bir istisna qaldırmalıdır.

Null ilə məşğul olmaqdan qaçınmaq lazım olan bir şeydir. Dillərdə Null olması ixtiraçısı tərəfindən Milyard Dollarlıq Səhv adlandırılıb!

Buna milyard dollarlıq səhvim deyirəm. 1965 -ci ildə sıfır istinadın icadı idi. O vaxt mən obyekt yönümlü bir dildə (ALGOL W) istinadlar üçün ilk hərtərəfli tipli sistem hazırlayırdım.

Məqsədim, tərtibçi tərəfindən avtomatik olaraq yoxlanılması ilə bütün istinadların istifadəsinin tamamilə təhlükəsiz olmasını təmin etmək idi. Ancaq həyata keçirmək çox asan olduğu üçün sıfır istinad etmək istəyinə müqavimət göstərə bilmədim.

Bu, ehtimal ki, son qırx ildə bir milyard dollarlıq ağrı və ziyana səbəb olan saysız -hesabsız səhvlərə, zəifliklərə və sistem çökmələrinə səbəb oldu.

Son illərdə Microsoft-dakı PREfix və PREfast kimi bir çox proqram analizatoru istinadları yoxlamaq və null olmayan bir risk varsa xəbərdarlıq vermək üçün istifadə edilmişdir. Spec# kimi daha yeni proqramlaşdırma dilləri sıfır olmayan istinadlar üçün bəyannamələr təqdim etdi. 1965 -ci ildə rədd etdiyim həll budur.

Tony Hoare

Seçimi geri qaytarın. NullPointerException riski olmadan fərqli bir etibarsız dəyər qaytarmağın bütün faydaları (məsələn, kolleksiyalarınızda boş dəyərlərə sahib olmaq).

Bu mübahisənin hər iki tərəfini görürəm və kodun təmiz saxlanılması, əlavə səhv idarəetmə bloklarının qarşısını almaq və s.

Ancaq null qaytarma tərəfdarlarının tərəfini tuturam. Bir metodun çağırılmasında və buna cavab vermədə əhəmiyyətli bir fərq olduğunu görürəm Heç bir məlumatım yoxdur və ilə cavab verir Məndə bu boş String var.

Bir şəxs sinifinə aid olan bəzi müzakirələri gördüyüm üçün sinif nümunəsini axtarmağa çalışdığınız ssenarini nəzərdən keçirin. Bir tapıcı xüsusiyyətini (məsələn, bir şəxsiyyət kodu) ötürsəniz, bir müştəri dəyər tapılmadığını görmək üçün dərhal null yoxlaya bilər. Bu mütləq istisna deyil (buna görə də istisnalara ehtiyac yoxdur), eyni zamanda aydın şəkildə sənədləşdirilməlidir. Bəli, bunun üçün müştəri tərəfindən bir qədər ciddilik tələb olunur və yox, bunun pis bir şey olduğunu düşünmürəm.

İndi etibarlı bir Person obyektini qaytardığınız alternativi nəzərdən keçirin. bunun içində heç bir şey yoxdur. Bütün dəyərlərinə (ad, ünvan, favoritDrink) null qoyursunuz, yoxsa indi etibarlı, lakin boş obyektləri olanları doldurursunuz? Müştəriniz heç bir şəxsin tapılmadığını necə müəyyənləşdirə bilər? Adın null əvəzinə boş bir String olub olmadığını yoxlamaq lazımdırmı? Bu cür şey əslində null yoxlayıb hərəkət etməyimizdən daha çox və ya daha çox kod qarışıqlığına və şərti ifadələrə səbəb olmayacaqmı?

Yenə də, bu arqumentin hər iki tərəfində razılaşa biləcəyim məqamlar var, amma düşünürəm ki, bu, ən çox insan üçün ən mənalıdır (kodu daha da davamlı etmək üçün).

Maddənin olub olmadığını bilmək istəyirsinizsə null qaytarın. Əks təqdirdə, gözlənilən məlumat növünü qaytarın. Maddələrin siyahısını geri qaytarırsınızsa bu xüsusilə doğrudur. Zəng edənin bir siyahı istədiyini, siyahının üzərində təkrar etmək istəyəcəklərini düşünmək ümumiyyətlə təhlükəsizdir. Null üzərində təkrar etməyə çalışsanız bir çox (ən çox? Hamısı?) Dillər uğursuz olur, ancaq boş bir siyahı üzərində təkrar edərkən.

Belə bir kodu sınamaq və istifadə etmək məni əsəbiləşdirir, ancaq uğursuz olur:

Heç bir şey olmadığı zaman xüsusi bir hal əlavə etməməliyəm şeylər.

Metodun semantikasından asılıdır. Bəlkə də müəyyən edə bilərsiniz, metodunuz yalnız "Null deyil" qəbul edir. Java -da bəzi metadata şərhlərindən istifadə edərək bunu elan edə bilərsiniz:

Geri qaytarma dəyərini bir şəkildə göstərməlisiniz. Bəyan edirsinizsə, yalnız NotNull dəyərlərini qəbul edirsiniz, boş sətri geri qaytarmaq məcburiyyətindəsiniz (əgər giriş boş simli olsaydı).

İkinci hal semantikasında bir az mürəkkəbdir. Bu üsul, bir insanı birincil açarı ilə geri qaytarmaqdırsa (və şəxsin mövcud olması gözlənilir), daha yaxşı yol istisna etməkdir.

Şəxsi müəyyən bir id ilə axtarsanız (mənə qəribə gəlir), bu metodu @Nullable olaraq elan etsəniz daha yaxşı olar.

null geri qaytarmaq ən yaxşı şeydir və yalnız aşağıdakı şərtlər tətbiq edildikdə:

  • sıfır nəticədir normal işləməsi gözlənilir. Bəzi ağlabatan şərtlərdə bir adam tapa bilməyəcəyinizi gözləmək olardı, buna görə də findPerson () sıfırını qaytarmaq yaxşıdır. Ancaq həqiqətən gözlənilməz bir uğursuzluq olarsa (məsələn, saveMyImportantData () adlı bir funksiyada), bir İstisna atmalısınız. Adda bir işarə var - İstisnalar müstəsna hallar üçündür!
  • null demək üçün istifadə olunur "tapılmadı / dəyər yoxdur". Başqa bir şey demək istəyirsənsə, başqa bir şeyi qaytar! Yaxşı nümunələr, Sonsuzluq və ya NaN qaytaran üzən nöqtə əməliyyatları olardı - bunlar xüsusi məna daşıyan dəyərlərdir, buna görə də bura null qaytarsanız çox qarışıq olar.
  • Funksiyasıdır tək bir dəyəri qaytarmaq üçün nəzərdə tutulmuşdur, findPerson () kimi. Bir kolleksiyanı qaytarmaq üçün nəzərdə tutulmuşdursa, məsələn. findAllOldPeople () sonra boş bir kolleksiya ən yaxşısıdır. Bunun nəticəsi kolleksiyanı qaytaran funksiyadır heç vaxt sıfıra dönməməlidir.

Bundan əlavə, əmin olun faktı sənədləşdirin funksiya sıfıra dönə bilər.

Bu qaydalara əməl etsəniz, nulllar əsasən zərərsizdir. Diqqət yetirin ki, null yoxlamağı unutsanız, normaldan dərhal sonra bir NullPointerException alacaqsınız, bu da ümumiyyətlə düzəltmək olduqca asan bir səhvdir. Bu uğursuz sürətli yanaşmadır daha yaxşı saxta bir geri qaytarma dəyərinə (məsələn, boş bir sətir) sahib olmaqdan daha çox, sisteminizdə sakitcə yayılan, ehtimal ki, məlumatları korlayan, istisna etmədən.

Nəhayət, bu qaydaları sualda sadalanan iki funksiyaya tətbiq etsəniz:

  • FindPerson - Şəxs tapılmasa bu funksiyanın sıfıra dönməsi uyğun olardı
  • Əks Tərs - görünür ki, bir simli keçərsə heç bir nəticə əldə edə bilməz (çünki boş sətir də daxil olmaqla bütün sətirlər geri çevrilə bilər). Buna görə heç vaxt sıfıra dönməməlidir. Bir şey səhv gedirsə (yaddaşdan çıxdı?), O zaman istisna edilməlidir.

Mümkün olduğunda Null Object modelindən istifadə etməyi məsləhət görürəm. Metodlarınızı çağırarkən kodu asanlaşdırır və çirkin kodu oxuya bilməzsiniz

əgər (someObject! = null & amp & amp someObject.someMethod ()! = hər hansı bir dəyər)

Məsələn, bir metod hansısa naxışa uyğun olan obyektlər toplusunu qaytarırsa, boş bir kolleksiyanın qaytarılması sıfırın qaytarılmasından daha məntiqlidir və bu boş kolleksiyanı təkrarlamaq faktiki olaraq heç bir performans cəzasına malik olmayacaqdır. Başqa bir vəziyyət, məlumatları daxil etmək üçün istifadə olunan sinif nümunəsini qaytaran bir üsul olardı, fikrimcə sıfırdan çox Null obyektinin qaytarılması üstünlük təşkil edir, çünki istifadəçiləri geri qaytarılmış istinadın sıfır olub olmadığını həmişə yoxlamağa məcbur etmir.

Null qaytarmağın mənalı olduğu hallarda (məsələn, findPerson () metoduna zəng etməklə), heç olmasa obyekt varsa (məsələn, personExists (int personId)) qayıdan bir metod təqdim etməyə çalışardım, başqa bir nümunə Java -da bir xəritədə ehtiva edən KeyKey () metodu). İstədiyiniz obyektin mövcud olmaması ehtimalının olduğunu asanlıqla görə biləcəyiniz üçün zəng edənlərin kodlarını daha təmiz edir (şəxs yoxdur, açar xəritədə yoxdur). Bir istinadın sıfır olub olmadığını daim yoxlamaq, mənim fikrimcə kodu maneə törədir.

Bəlkə tipli konstruktor haqqında insanların dediklərinə əlavə olaraq:

NPE risk etməməkdən başqa bir böyük qazanc da semantikdir. Saf funksiyalarla məşğul olduğumuz funksional dünyada, tətbiq edildikdə funksiyaları yerinə yetirməyə çalışmaq istərdik qaytarma dəyərinə tam bərabərdir. String.reverse () vəziyyətini nəzərdən keçirin: Bu, müəyyən bir sətir verilən sətrin tərs versiyasını təmsil edən bir funksiyadır. Bu sətrin mövcud olduğunu bilirik, çünki hər bir sətir geri çevrilə bilər (sətirlər əsasən sifarişli simvol dəstləridir).

İndi findCustomer (int id) haqqında nə demək olar? Bu funksiya, verilən identifikatoru olan müştərini təmsil edir. Bu ola biləcək və ya olmayan bir şeydir. Ancaq unutmayın ki, funksiyaların tək bir qaytarma dəyəri var, buna görə də "bu funksiya verilmiş ID ilə müştəri qaytarır" deyə bilməzsiniz OR sıfır qaytarır.

Həm sıfırın qaytarılması, həm də sıfır obyektin qaytarılması ilə bağlı əsas problemim budur. Aldadırlar. null müştəri deyil və bu da "müştərinin olmaması" deyil. Bu, heç bir şeyin olmamasıdır. Bu, heç bir şey üçün yazılmamış bir göstəricidir. Çox aşağı səviyyəli və çox çirkin və çox səhvlərə meyllidir. Düşünürəm ki, boş bir obyekt də olduqca yanıltıcıdır. Sıfır müştəri müştəridir. Birinin olmaması deyil, şəxsiyyət vəsiqəsi tələb olunan müştəri deyil, ona görə qaytarmaq sadəcə YANLIŞdır. Bu mənim istədiyim müştəri deyil, amma yenə də müştəri qaytardığınızı iddia edirsiniz. Səhv bir identifikator var, aydındır ki, bu bir səhvdir. Metod adı və imzası ilə təklif olunan müqaviləni pozur. Dizaynınızla bağlı hər şeyi qəbul etmək və ya sənədləri oxumaq üçün müştəri kodunu tələb edir.

Bu məsələlərin hər ikisi Bəlkə Müştəri tərəfindən həll olunur. Birdən -birə "bu funksiya verilən ID ilə müştərini təmsil edir" demirik. Deyirik ki, "bu funksiya verilmiş şəxsiyyəti olan müştərini təmsil edir əgər varsa. İndi nə etdikləri çox açıq və aydındır. Mövcud olmayan şəxsiyyət vəsiqəsi ilə müştəri istəsəniz, heç nə almayacaqsınız. Bu sıfırdan daha yaxşıdır? Yalnız NPE riski üçün deyil. Həm də ona görə ki, "Heç bir şey" növü yalnız Bəlkə deyil. Bəlkə Müştəridir. Semantik məna daşıyır. Xüsusilə belə bir müştərinin olmadığını göstərən "müştərinin olmaması" deməkdir.

Null ilə bağlı başqa bir problem, əlbəttə ki, qeyri -müəyyəndir. Müştəri tapa bilməməyiniz, yoxsa bir db bağlantısı xətası var idi və ya o müştərini görməyimə icazə verilmədi?

Bu kimi bir neçə səhv halınız varsa, ya bu versiyalar üçün istisnalar ata bilərsiniz, ya da (və mən bu yolu üstün tuturam) ya yanlış gedən bir şeyi, ya da geri qaytarılmış müştərini təmsil edən ya CustomerLoadError Müştəri qaytara bilərsiniz. Bəlkə Müştərinin bütün üstünlüklərinə malikdir, eyni zamanda nəyin səhv ola biləcəyini təyin etməyə imkan verir.

Aradığım əsas şey, imza ilə funksiyanın müqaviləsini çəkməkdir. Şeyləri güman etməyin, keçici konvensiyalara güvənməyin, açıq olun.


Layihələr - Bahar 2021

Bandwidth, ünsiyyətə yönəlmiş bir proqram şirkətidir. Bandwidth & rsquos platforması, hər gün ünsiyyət qurduğunuz bir çox ünsiyyətin arxasındadır. İşə gedərkən ananı çağırırsan? Çimərlikdən komandanızla bir konfrans zənginə ümid edirsiniz? Mətn vasitəsi ilə saç düzümü sifariş edirsiniz? Ümummilli şəbəkəmizin üstündə qurulmuş API -lərimiz, yenilikçi müştərilərimizin həyatınızı gücləndirən texnologiyaya xidmət etməsini asanlaşdırır.

Arxa plan və Problem Bildirimi

Kari & rsquos Qanunu, 911-ə zəng vurulduqda təyin olunmuş işçilərə bildirişləri tətbiq etmək üçün çox xəttli telefon sistemlərindən (MLTS) istifadə edən müəssisələrdən tələb edir. Bu bildirişlər telefon zəngi, e-poçt, SMS/mətn mesajı və ya ekranda görünən mesaj şəklində ola bilər.

Bandwidth-in hazırda səs, e-poçt və sms üçün bir həlli var, ancaq mobil push bildiriş həlli yoxdur.

Layihənin təsviri

Həqiqətən bir Konsepsiyaya ehtiyacımız var. API və rsquosumuzla mobil push bildirişi yaratmaq üçün bunun mümkün olub olmadığını görmək istəyirik.

Kifayət qədər bildiriş, son nöqtənin yeri haqqında məlumatlı olmağı tələb edir. Fövqəladə hallar çoxmərtəbəli bir binada, geniş kampus mühitində, anbarda və s.

Bu o deməkdir ki, ünsiyyət sisteminiz həm 9-1-1 zəngi barədə bildiriş verməli, həm də müəssisəniz daxilində bu zəngin haradan gəldiyini kimisə xəbərdar etməlidir.

Mümkün şəxslər:

Otel işçiləri: Tibbi təcili yardım otelin ərazisində baş verir və işçiləri təcili yardım yerinə yönəltməlisiniz.

Kampus Təhlükəsizliyi: Fövqəladə hallar baş verir və kampus təhlükəsizliyini kampusun təhlükəsizlik açarları tələb edən bir sahəyə yönəltməlisiniz.

Fövqəladə Səs Xidmətləri qrupunda, həyat üçün həyatımızı xilas edirik. Məktəb kampusları və nəhəng otellər kimi daha böyük təşkilatlarla təcili xidmətlərin ön masada görünməsini və 911 zənginin haradan gəldiyini anlamaq üçün gözləyə bilərsiniz.

Bu xüsusiyyət/POC, təşkilatlara və təcili yardım xidmətlərinə daha sürətli və birbaşa yerə kömək göstərməkdə kömək edəcək.

Texnologiyalar və digər məhdudiyyətlər

AWS Amplify, Microsoft Azure Notifications Hub və ya Google Firebase kimi bulud texnologiyalarını təşviq edərdi.

Burada Super Esneklik. Bildirişi işə salmaq üçün Bandwidth API -lərinə üstünlük verərdik. Ən son bildiriş olaraq ən az 1 növ telefon satıcısı gözləyərdik. Bu həm də mobil simulyator ola bilər.

2. NC -nin BCBS - Şəxsi Blockchain İdarəsi

BCBSNC haqqında

BCBSNC, bir çox digər təşkilatla ardıcıl və tez məlumat mübadiləsi etməsi lazım olan bir tibbi sığorta təminatçısıdır.

Arxa plan və Problem Bildirimi

BCBSNC, xarici təşkilatlarla məlumat mübadiləsi üçün xüsusi blockchain texnologiyasından istifadəni genişləndirmək istəyir. Blockchain texnologiyasının konfiqurasiyası çox əl ilə aparılır və idarəetməni asanlaşdırmaq üçün bir yol axtarırıq.

Layihənin təsviri

Bu layihə, Hyperledger Fabric Blockchain texnologiyasına dərin bir girişdir və inzibati əmr satırı vasitələri üçün qrafik istifadəçi interfeysləri qurur. AWS ECS yerləşdirmələrindən istifadə edərək həmyaşıd qovşağının qurulmasını və idarə olunmasını asanlaşdıran bir layihə yaradacaq.

Hyperledger Fabric texnologiyalarının çoxu çətin əmr satırı proqramları və JSON / Yaml konfiqurasiya sənədləri vasitəsilə idarə olunur. Bu layihə idarəetməni asanlaşdırmaq və potensial səhvləri azaltmaq məqsədi daşıyır.

Texnologiyalar və digər məhdudiyyətlər

- YAML, JSON və Protokol Tamponları

- Elektron əsaslı müştəri quraşdırılmış proqram

Masaüstü (üstünlük verilir) və ya veb əsaslıdır

3. Kurs Planlaşdırma Proqramı - NCSU Kurs Planlaşdırma Proqramı

Fon

Hər semestr, Kompüter Elmləri Bölümü, növbəti semestrdə təqdim ediləcək bütün kursları planlaşdırmalıdır. Tipik olaraq, bu, təxminən 200 ayrı bölmə (mühazirə və laboratoriya) üçün uyğun vaxt tapmaq deməkdir.

Bu kursları öyrədən müəllimlər yalnız müəyyən günlərdə və vaxtlarda olur və sinif otaqları çox vaxt çatışmır. Bundan əlavə, eyni zamanda planlaşdırılmamalı olan kurslar var, çünki eyni semestrdə eyni tələbə qrupu tərəfindən alınacaq.

Bu gün, kursların planlaşdırılması əsasən əl ilə aparılır, Google Formalarından istifadə edərək müəllimlərin mövcudluğunu və (bir çox) Google Cədvəlləri, kursların yerləşdirilə biləcəyi təqvim təqvimləri kimi toplamaq və sonra lazım olduqda gəzmək olar.

Layihənin təsviri

Bu layihədə, sürükle-burax təqvim interfeysi və konfiqurasiya edilə bilən qaydalar toplusunu tətbiq etmək qabiliyyəti olan veb əsaslı bir planlaşdırma proqramı dizayn edəcək və tətbiq edəcəksiniz. Əsas xüsusiyyətlər aşağıdakılardır.

  1. GUI, vəzifələri planlaşdırmaq üçün təqvimə bənzər ayrı görünüşlər təqdim edəcək (məsələn, bir baxış "Yüzillik Kampusda Bazar ertəsi-Çərşənbə kursları" olacaq). Bir baxışda hələ planlaşdırılmamış bütün dərslər olacaq. Bu GUI, kursların yerləşdirilməsi və hərəkət edilməsi üçün elektron tabloların mövcud istifadəsini əvəz edəcək.
  2. Planlaşdırma proqramı, CSC fakültəsinin siyahısı və kursların siyahısı kimi planlaşdırma görünüşlərinin, qaydaların və faydalı məlumatların bir neçə digər cədvəlinin məzmununu saxlamaq üçün bir verilənlər bazası tələb edir. Hər semestrin əvvəlində verilənlər bazasını doldurmaq üçün köməkçi proqram hər bir cədvəl üçün giriş faylını (məsələn, CSV və ya JSON) oxumalıdır. Və hər semestrin sonunda məlumatları arxivləşdirmək üçün yardım proqramı öz məlumatlarını eyni formatdakı bir sıra fayllara yaza biləcək.
  3. Konfiqurasiya edilə bilən sadə qaydalar dəsti istifadəçilərə planlama səhvlərindən qaçmağa kömək edəcək. "Təlimatçı bir anda yalnız bir yerdə ola bilər" kimi bəzi qaydalar ümumidir. "CSC 316 və CSC 326 eyni vaxtda planlaşdırılmamalıdır" kimi digər qaydalar çox spesifikdir. Əsas dizayn problemi, qaydaları və istifadəçi təcrübələrini təqdim etməkdir. (Qaydalar necə baxılır və redaktə olunur? İstifadəçi qaydanı pozacaq bir kurs planlaşdırmağa çalışanda nə olur?)

Texnologiyalar

Planlaşdırma proqramı Shibboleth identifikasiyasından istifadə etməlidir və icazə sadəcə tətbiq konfiqurasiyasının bir hissəsi ola bilər.

Başqa heç bir xüsusi texnologiyaya ehtiyac yoxdur. Platforma, tətbiq dili, ön çərçivə və verilənlər bazası seçimləri iki məhdudiyyət nəzərə alınmaqla edilməlidir. Birincisi, CSC İT işçiləri planlaşdırıldıqdan sonra planlaşdırma proqramına ev sahibliyi edəcək. İkincisi, uzun illər planlaşdırma proqramından istifadə edəcəyimizə ümid edirik, buna görə nadir hallarda pozucu dəyişikliklər gətirən sabit texnologiyaları qiymətləndiririk.

4. LAS 1 - Böyük Məlumat Boru Kəmərlərinin Monitorinqi üçün UI

Analitik Elmlər Laboratoriyası haqqında

LAS, yeni analitik texnologiya və kəşfiyyat təhlili ticarət sənətkarlığının inkişafına yönəlmiş bir missiya yönümlü tərcümə tədqiqat laboratoriyasıdır. Hökumət, akademiya və sənayenin hər yerindən olan tədqiqatçılar, texnoloqlar və əməliyyat işçiləri, analiz iş axınlarını dəyişdirən yenilikləri inkişaf etdirmək üçün əməkdaşlıq edirlər.

Arxa plan və Problem Bildirimi

Böyük məlumatlar mürəkkəbdir və nəzarət etmək çətindir. Birdən çox mənbədən gələn böyük həcmli məlumatlara uyğunlaşmaq üçün şirkətlər, korporativ məlumat anbarlarına (CDR) daxil edilməzdən əvvəl məlumatları normallaşdırmaq və standartlaşdırmaq üçün məlumat xətləri qurmuşlar. İşlənməni sürətləndirmək üçün hər bir boru kəməri adətən fayl dəstələri üzərində vəzifələri yerinə yetirir. Bəzi emal nümunələrinə aşağıdakılar daxildir:

  • Məlumatları yeni bir formata çevirmək (məsələn, JSON -dan csv -ə)
  • Bir dəstə içərisində təkrarlanan məlumatların silinməsi (məsələn, bir və ya iki sütunu sildikdən sonra eyni məlumatları təkrarlaya bilərsiniz)
  • Məlumatların təsdiqlənməsi - sahə dəyərlərinin boş olmadığını və standartlara uyğun olduğunu təsdiqləyir

Məlumat xəttini izləmək üçün CDR menecerləri tez -tez ümumiləşdirilmiş məlumatlar ilə maraqlanırlar:

  • İşlənmiş məlumatların / partiyaların ümumi miqdarı
  • İşlənmə zamanı xətalı olan xüsusi məlumat qrupları
  • Məlumat paylanmasının bir partiyadan daha uzun müddətə təsdiqlənməsi (məsələn, gündəlik, həftəlik, aylıq, illik və s.)
  • Məlumat ötürmə qabiliyyəti (məsələn, keçən həftə olduğu kimi işləyirikmi?)

Çoxsaylı homojen məlumat boru kəmərləri ilə qidalanan böyük depolarda, CDR menecerlərinin daha mürəkkəb ölçülərə ehtiyacı var:

  • Məlumatların ümumi paylanması, korporativ prioritetlərə uyğunlaşdırılması üçün (məsələn, istifadə edilmədikdə bir çox günlük məlumatın saxlanması / aşağı investisiya gəliri)
  • Ümumi məlumat dərəcələri - darboğazların işlənməsini harada yaşayırsınız?

Boru kəməri sahiblərinin/CDR menecerlərinin monitorinqi və məlumat keyfiyyəti məlumatlarını mərkəzdən idarə etməsinə imkan yaratmaq üçün istifadəçi dostu bir UI inkişaf etdirilə bilərmi?

Layihənin təsviri

Tələbə komandası, aşağıdakı funksiyalara malik API, verilənlər bazası və UI ilə bir veb tətbiqetməsi yaratmalı olacaq:

  • Barındırılan bir məlumat kəmərindən toplanan məlumatları qəbul edin, emal edin, saxlayın və ixrac edin. Məlumatlar əsasən məlumat kəmərlərinin sistem sağlamlığını izləmək üçün istifadə ediləcək.
  • Fərdi məlumat kəmərləri ilə əlaqəli məlumatlara girişi nəzarət edin (məsələn, istifadəçiləri və icazələri olan çox sadə verilənlər bazası cədvəli - mürəkkəb bir istifadəçi idarəetmə funksiyası yaratmağa ehtiyac yoxdur)
    • Minimum səy: verilənlər bazası cədvəlini yeniləmək üçün SQL skriptləri
    • Bir az səy: Masaları yeniləmək üçün Python CLI
    • Daha çox səy: idarə etmək üçün UI
    • Sahib, skripti kopyalayıb yapışdırıb UI -də saxlaya bilməlidir (məsələn, ace redaktoru)
    • Bu xüsusi API son nöqtəsinə məlumat göndərmək, skript məlumatları giriş olaraq işlədəcək və nəticəni cavab olaraq qaytaracaq. İstifadə nümunəsinə aşağıdakılar daxildir:
    • Bu xüsusi məlumat parçasını əvvəllər gördükmü? (hashed info) Bu məlumatları maşın öyrənmə alqoritmi ilə işlədin
    • Son N saylı sorğu və cavablara baxın/daxil edin

    İnkişaf etdirilmiş UI/API, CDR menecerlərinə və məlumat boru kəməri sahiblərinə sistemlərini daha yüksək effektivliklə izləməyə və idarə etməyə imkan verəcəkdir. Xüsusi nümunələrə aşağıdakılar daxildir:

    • Məlumat xətti içərisində emal səhvlərini avtomatik olaraq aşkar edin
    • Məlumat keyfiyyəti dəyişdikdə avtomatik olaraq xəbərdar olun
    • Məlumat axınlarına maşın öyrənmə və xüsusi API cavabları əlavə etmək qabiliyyəti. Toplu işləmə zamanı məlumatları təkrarlayın

    Texnologiyalar və digər məhdudiyyətlər

    Aşağıda müxtəlif komponentlər üçün məqbul variantlar verilmişdir.

    • Verilənlər bazası - SQL əsaslı (məsələn, MariaDB, Postgres, MySQL)
    • Arka uç - Python (Şüşə və ya Django), Node.js (Adonis) və ya PHP (Laravel)
    • Frontend - Vue.js, Angular.js, Angular və ya React
    • Nəticə Docker istifadə edilməlidir
    • Ön ucu yığmaq üçün - veb paketi (tövsiyə edilmir)

    Ən son Chrome və ya Firefox versiyasını hədəf alan veb tətbiqi.

    USG şəxsləri və ya qrupları ilə birlikdə edilən araşdırmaların ictimai paylanmaları USG tərəfindən nəşrdən əvvəl nəzərdən keçirilir. LAS vəziyyətində, adətən bu araşdırma prosesi böyük məqsədəuyğunluqla aparılır, tədqiqat tərəfdaşları üçün şəffafdır və tələbələr üçün heç bir nəticəsi yoxdur.

    5. SUB 2 - Dialoqdan Bilik Qrafiki çıxarılması

    Analitik Elmlər Laboratoriyası haqqında

    LAS, yeni analitik texnologiya və kəşfiyyat təhlili ticarət sənətkarlığının inkişafına yönəldilmiş bir missiya yönümlü tərcümə tədqiqat laboratoriyasıdır. Hökumət, akademiya və sənayenin hər yerindən olan tədqiqatçılar, texnoloqlar və əməliyyat işçiləri analiz iş axınlarını dəyişdirən yenilikləri inkişaf etdirmək üçün əməkdaşlıq edirlər.

    Problem bəyanat

    Aşağıdakı söhbəti eşitdiyinizi düşünün:

    GEORGE: Jerry! Jerry, saç qurutma maşını şəkli pozdu! Başqa birinə ehtiyacım var və ya qadağan edilmiş şəhərə qayıda bilmərəm!

    GEORGE: Jerry! İnsan Əllərinin başqa bir şəklini çəkməyinizə ehtiyacım var. Sənə yalvarıram!

    JERRY: Sənin üçün alsam, məni o kluba aparacaqsan və mənə yaxşı vaxt göstərəcəksən?

    GEORGE: Bəli! Bəli, tamam-hər şey!

    İndi təsəvvür edin ki, nə danışdıqlarını izah etməyi xahiş edirlər.

    Nəhayət, bu söhbətin ana dilinizdə olmadığını düşünün.

    Dil Analitikləri işlərində bu vəziyyətlə tez -tez qarşılaşırlar. Şifahi ünsiyyəti başa düşməyə çalışmaq, əvvəllər görülməmiş bir televiziya şousunun təsadüfi bir mövsümündən təsadüfi bir səhnəni-xarici dildə anlamağa çalışmaq kimidir. Yalnız bir dil analitikinin xarici dili ingilis dilinə tərcümə etməsi lazım deyil, başqalarına nə baş verdiyini başa düşmək üçün transkriptlərinə mənalı bir kontekst əlavə etməlidirlər. Kim kimlə qohumdur? Ümumi kontekst nədir? Hansı kod sözlərindən istifadə edirlər? Kim kimə yalan danışır? Etc Analitikin təcrübə səviyyəsindən və müvafiq məlumatların qaranlığından asılı olaraq, bu tip kontekstli məlumatların transkriptlərə əlavə edilməsi çox vaxt aparır və müxtəlif alətlər və mənbələr üzərində araşdırma tələb edir.

    Öncəki söhbətlərdən və ya ünsiyyətdən əhəmiyyətli kontekstual məlumatları avtomatik olaraq çıxararaq təşkil edərək, analitiklər işlərini yerinə yetirərkən müvafiq məlumatları təklif edə bilərlər.İdeal olaraq, bu kompleks, bir -biri ilə əlaqəli məlumatlar daha ənənəvi, əlaqəli bir verilənlər bazası deyil, Bilik Qrafiki olaraq saxlanılacaqdır. Bilik Qrafikləri, insanlar, hadisələr, məhsullar, qurğular və dini və ya siyasi qruplar kimi varlıqların bir -biri ilə əlaqəli əlaqələr toplusudur. Təbii Dil İşləmə (NLP) və Bilik Qrafiki sahəsindəki mövcud açıq mənbəli paket və modellərin əksəriyyəti xəbər məqalələri və ya Vikipediya kimi povest mətnindən strukturlaşdırılmış biliklərin çıxarılmasına yönəlmişdir. Dialoqdan məlumat əldə etmək daha çətin bir problemdir və təklif olunan yüksək səviyyəli dizayn layihəsi bu məkanda bir problemi həll edir.

    Layihənin təsviri

    Tipik olaraq, bir Bilik Grafiği məlumat bazası, predikat və obyektin nitq hissələrindən ibarət üçlük dəstlərindən ibarətdir. Məsələn, bu üçəmlərə (Elaine, Pendent Publishing -də işləyir) və ya (Jerry, Kramerin qonşuları) daxil ola bilər. Vizual olaraq, bu bilikləri və bu əlaqələri üçlüyün mövzusu və obyekti düyünlər və predikat düyünləri birləşdirən kənar olan bir qrafiklə təmsil edə bilərsiniz.

    Dialoqda NLP texnikasından istifadə edərək bütün mövzu-predikat-obyekt üçlüyünün avtomatik olaraq toplanması bir çox "maraqsız" üçlüyə səbəb olur. Bu proses viki məqalələrində və ya xəbərlərdə nisbətən uğurludur, çünki bu cür mənbələrdəki cümlələrin əksəriyyəti uzunmüddətli biliklərə malikdir-çoxlu doldurucu deyil. Dialoqda, (George, qaçdı, Tim) kimi bir çox üçlüyün yalnız qısa müddətli bir əlaqəsi var, bu üçlüyün o anda əhəmiyyətli ola bilər, amma çox güman ki, uzun müddətdir bir Bilik Qrafikində saxlamaq istədiyimiz bir şey deyil. .

    Bu layihə üzərində işləyən tələbələrdən, dialoq məlumatlarından yalnız uzunmüddətli əlaqəsi olan üçəmləri çıxarmaq üçün qayda əsaslı və ya AI modellərindən istifadə edərək texnikalar hazırlamaları xahiş olunur. Sponsorlar, üçüzlərə dəyərlərin necə veriləcəyinə dair bəzi əsas təkliflər verəcəklər, baxmayaraq ki, şagirdlər öz metod (lar) ını hazırlamaq üçün intuisiyalarına riayət etməyə təşviq ediləcəklər. Tələbələrə işləyəcək Seinfeld epizod transkriptlərinin tam dəstinə giriş veriləcək. Şouda daxili zarafatların və ləqəblərin yayılması, bu cür istinadları anlamaq üçün dialoqun ortaq xüsusiyyətidir, dil analitikləri üçün əsas problemlərdən biridir.

    Bu layihə üzərində işləyən tələbələr, ehtimal ki, hal-hazırda mövcud olan bəzi açıq, açıq mənbəli NLP paketlərindən necə istifadə etməyi öyrənməklə başlayacaqlar. Bu ən son model modelləri və texnikaları həm xəbər məqalələri, həm də Seinfeld dialoqu kimi izahlı mətnlər üzərində icra edərək, tələbələr mövcud NLP imkanları ilə yanaşı məhdudiyyətlərlə də tanış olacaqlar.

    Mövzu-predikat üçlüyü avtomatik olaraq çıxarmaq üçün mətnin işlənməsi, ehtimal ki, xüsusən dialoq məlumatları ilə məşğul olarkən, hər ikisi də qeyri-əhəmiyyətsiz vəzifələr olan adların tanınması və bəzi əsas fikir həlli tələb edəcək. Vaxt icazə verərsə və maraq olarsa, şagirdləri də bu mövzuları araşdırmağa təşviq edirik. Bununla birlikdə, bu layihəni asanlaşdırmaq üçün tələbələrə dialoq məlumatlarını yaxşı yerinə yetirmək üçün xüsusi olaraq öyrədilmiş və Python spaCy NLP paketi ilə işləyən NER modeli təqdim edilə bilər.

    Tələbələr hansı üçəmlərin bilik qrafikində saxlanmağa dəyər olduğunu və hansının olmadığını müəyyən etmək üçün meyarlar hazırlamalı olacaqlar. Yuxarıda qeyd edildiyi kimi, sponsorlar bir neçə əsas qaydaya əsaslanan yanaşma təklif edəcəklər, lakin şagirdlər intuisiya vurarsa öz metodologiyasını hazırlamağa təşviq ediləcəklər. Komanda istəsə və zaman ayırsaydı, sponsorlar dil analitiklərindən tələbələrin üçlü filtrasiya üçün daha mürəkkəb nəzarət edilən ML yanaşmalarını aktivləşdirmək üçün, bəlkə də semantik oxşarlığı müəyyən etmək üçün söz yerləşdirmə üsullarından istifadə etməklə tələbələr tərəfindən yaradılmış üçlükləri etiketləməsini istəyə bilərlər.

    Vaxt qalırsa, bu layihə üçün uzanma hədəfləri çoxdur. Qrafik/şəbəkə alqoritmlərinin tətbiqi (qruplaşdırma, icma aşkarlama, mərkəzlilik, məsafə və s.) Müxtəlif xüsusiyyətlərə imkan vermək və şagirdlər tərəfindən hazırlanan qrafik filtrasiya metodlarının performansını ölçmək üçün istifadə edilə bilər. Bu işin nəticələrini göstərmək üçün məlumat vizuallaşdırması yaratmaq da arzuolunandır, baxmayaraq ki, UI -in inkişafı cari məqsəd deyil.

    KG üçlü filtrasiya üsullarını sınamaq üçün Seinfeld televiziya şousunun transkriptlərindən istifadə edəcəyik. Məlumat dəstinə daxildir:

    • Seinfeld -dən 9 mövsüm (180 bölüm) dialoq, əksəriyyəti ardıcıl formatlaşdırma təmin etmək üçün əl ilə təmizlənmişdir
    • Bu mövsümlərdən 4 -ü də səhnələrə bölündü (455 səhnə) və bir analitikin transkriptə daxil etməsi lazım ola biləcək kontekstli şərhlərlə əl ilə əlavə edildi.
    • Vikipediyadan "real dünya" (yəni obrazları canlandıran aktyorlar) haqqında məlumatlar çıxarılaraq silinmiş epizod sinopları, belə ki, sinoplar yalnız Seinfeld Kainatına yönəlib

    Son İstifadəçilərə Faydaları

    Transkripsiya məlumatlarından avtomatik olaraq müvafiq bilik qrafiki yaratmaq qabiliyyəti istənilən sayda sonrakı tətbiqləri dəstəkləyə bilər. Bu layihənin tətbiq istiqaməti, dil analitiklərinin dialoqun əsl mənasını anlamaqda oxucu üçün vacib ola biləcək əlavə kontekstli məlumatlar ilə transkripsiyaları səmərəli şəkildə şərh etməsinə imkan verməkdir.

    Texnologiyalar və digər məhdudiyyətlər

    • Ümumi İnkişaf & ndash Pythona üstünlük verir, lakin digərləri yaxşıdır (C/C ++/Java/və s.)
    • KG Database & ndash Bir çox variant mövcuddur (Grakn, Neo4j, GraphDB, KGTK, hətta əsas üçlü mağaza və s.). Bu variantların müsbət və mənfi tərəflərini araşdırmağı və müzakirə etməyi gözləyirik
    • Konteynerizasiya və ndash Docker - tələb
    • Bulud saxlama və ndash Tələb deyil, tələbələr istəsələr bir seçimdir
    • İnterfeys və ndash Linux əmr satırı interfeysi qəbuledicidir, lakin nümayiş məqsədləri üçün son dərəcə sadə bir GUI inkişaf etdirilə bilər.
    • Tercih olunan paradiqma: Masaüstü, əmr satırı interfeysi məqbuldur.

    USG şəxsləri və ya qrupları ilə birlikdə edilən araşdırmaların ictimai paylanmaları USG tərəfindən nəşrdən əvvəl nəzərdən keçirilir. LAS vəziyyətində, adətən bu araşdırma prosesi böyük məqsədəuyğunluqla aparılır, tədqiqat tərəfdaşları üçün şəffafdır və tələbələr üçün çox az əhəmiyyət kəsb edir.

    6. Rosie - Təhlükəsiz Məlumat Paylaşımı

    Fon

    Təəccüblüdür ki, bəlkə də elm adamları, iqtisadçılar və digərləri arasında məlumat paylaşımının ən çox yayılmış formatı aşağı CSV (Virgülle Ayrılmış Dəyərlər) fayl formatı ola bilər. Və Microsoft Excel -in CSV sənədlərindən oxunan bəzi məlumat növlərini səhv şərh etməsinə baxmayaraq, əsas məlumat elmi üçün ən çox istifadə edilən vasitə elektron tablo kimi görünür. Daha da pisi odur ki, məlumatlar Excel tərəfindən səssizcə pozulur, bu da tez -tez pozulmuş məlumatların A şəxs tərəfindən saxlanılması ilə nəticələnir və daha sonra B adamı ilə paylaşmaq üçün bəzi pis məlumatları olan bir CSV faylını ixrac edir. İnternetdə paylaşılan bir çox məlumat faylları ilə, məsələn pis məlumatlar olan konfrans veb saytları vasitəsilə.

    Cədvəl istifadəçiləri CSV fayllarını idxal edərkən ən çox rast gəlinən problemlərdən bəziləri bunlardır:

      Gen adları Excel tərəfindən tarix olaraq səhv şərh olunur. (Mənbə: https://www.biostat.wisc.edu/

    Məlumatla işləyən hər kəsin Excel -dən qaçacağını düşünürsən. Bununla birlikdə, digər elektron cədvəllər, Excel -in necə işlədiyini düşündükləri kimi işləmək üçün eyni pis davranışı təkrarladı.

    İqtisadçılara, elm adamlarına və bir çox digər insanlara, məlumatların təqdim olunma tərzini dəyişdirmək üçün CSV faylını emal edən bir alət quraraq, elektron cədvəlin yaratdığı məlumat korrupsiyasının qarşısını almağa kömək edə bilərik. CSV Enjeksiyon Hücumlarını da aşkar edə və azalda bilərik.

    Python-da (keçmiş NCSU tələbəsi tərəfindən) müxtəlif məlumat formatlarını aşkar etmək üçün Rosie Pattern Language istifadə edərək belə bir məlumatın əvvəlcədən işlənməsi vasitəsinin prototipi yazılmışdır. Bu layihə o prototipdən nə qədər faydalı olduğunu sübut edə bilər.

    Layihənin təsviri

    Bu layihədə CSV sənədlərinin məlumat elmi üçün əvvəlcədən işlənməsi üçün bir həll hazırlayacaqsınız. Həlliniz, sizə təqdim ediləcək prototipdə göstərildiyi kimi yuxarıda və digər problemləri həll edəcək. Funksionallıq bir neçə cəhətdən prototipin funksiyasını üstələməlidir. Birincisi, şəffaf və konfiqurasiya olunmalıdır, yəni statistik nəticələr və eşiklər görünən və dəyişkən olacaq. İkincisi, genişləndirilə bilən olmalıdır (kifayət qədər məlumatlı bir istifadəçi tərəfindən). Üçüncüsü, funksionallığa əmr satırından, Excel plaginindən və istifadəçilərin təhlil və emal üçün fayl yükləyə biləcəyi bir veb səhifəsi vasitəsi ilə, vizual yoxlama və ya yükləmə üçün təmizlənmiş bir fayl ilə daxil olmaq lazımdır.

    Texnologiyalar

    Tək tələb olunan proqramlaşdırma texnologiyası, bir çox digərləri kimi, ümumi tarix və vaxt formatlarını tanımaq üçün nümunələr kitabxanasına malik olan Rosie Pattern Language (https://rosie-lang.org) dır. İşinizdə yeni nümunələr (adi ifadələrə bənzər) yazmağa ehtiyac ola bilər.

    Test üçün həm Excel, həm də Google Sheets istifadə edilməlidir.

    Python, hər yerdə olması və məlumat elmi ictimaiyyətində populyarlığı səbəbiylə namizəd bir tətbiq dilidir, baxmayaraq ki, bu çətin bir tələb deyil.

    7. Siemens Healthineers - Anbar Məkanı Optimizatoru

    Siemens Healthineers haqqında

    Siemens Healthineers, dəyişən bir səhiyyə mənzərəsinin klinik, əməliyyat və maliyyə problemlərini həll etmək üçün lazım olan güvən verərək, daha yaxşı xəstənin nəticələrini daha yüksək effektivliklə dəstəkləyən yeniliklər hazırlayır. Tibbi görüntüləmə, laboratoriya diaqnostikası və sağlamlıq məlumat texnologiyaları sahəsində qlobal bir lider olaraq, diaqnoz və müalicənin qarşısının alınmasından və erkən aşkarlanmasından tutmuş bütün xəstəyə qulluq davamlılığı haqqında mükəmməl bir anlayışa sahibik.

    Siemens Healthineers -də məqsədimiz, sağlamlıq xidmətlərini rəqəmsallaşdırmaqla təmin edilən, həssas dərmanı genişləndirmək, tibbi xidməti dəyişdirmək və xəstə təcrübəsini yaxşılaşdırmaq yolunda onlara sağlamlıq təmin edərək dəyərini artırmalarını təmin etməkdir.

    Arxa plan və Problem Bildirimi

    Xidmət mühəndislərimiz, dünyadakı xəstəxanalarda və digər obyektlərdə görüntüləmə və diaqnostika maşınlarımıza planlı və planlaşdırılmamış texniki xidmət göstərir. Çox vaxt mühəndislər ehtiyat hissələri sifariş edirlər. İdarə olunan Logistika departamentimizin işi, bu hissələrin mühəndisə göndərilməsi prosesini mümkün qədər səmərəli etməkdir. Doğru hissəni doğru zamanda doğru yerə çatdıraraq özünə inamı təmin etməyə kömək edirik.

    Mümkün olan ən sürətli və ən yaxşı xidməti təmin etmək üçün, tez -tez ehtiyac duyulan hissələri müştərilərimizə bir mərkəzi anbarda olduğundan daha yaxın saxlayaraq, ölkə daxilində kiçik anbarlar şəbəkəsinə sahibik. Məqsədlərimiz, mövcud anbarlarımızın müştərilərimizi gözləməyi minimuma endirən bir yerdə olub olmadığını yoxlamaq və əlavə anbarlar üçün mümkün olan ən yaxşı yerləri müəyyən etməkdir.

    Layihənin təsviri

    Optimal depo yerlərini göstərmək üçün bitişik 48 əyalətdəki trafik məlumatları ilə birlikdə son sifariş tariximizdən istifadə edə biləcək bir proqram axtarırıq. Proqram, istifadəçilərə məhdudiyyətlər və dəyişənlər daxil etməyə imkan verən və xəritədə potensial yerləri göstərən bir istifadəçi interfeysinə sahib olacaq.

    Bunun bizə kömək etməsinin əla bir yolu problem bəyanatında göstərilən problemi həll etməkdir. Ehtiyat hissələri nə qədər səmərəli çatdıra bilsək, mühəndislərimiz xəstəxanalar üçün tibbi maşınları bir o qədər tez internetə qaytara bilərlər.

    Texnologiyalar və digər məhdudiyyətlər

    Ümid edirik ki, şagirdlər istifadə edəcəkləri doğru texnologiyaları təyin edə biləcəklər.

    Xəritə/trafik API-dən istifadə edərək veb əsaslıdır

    Açıqlama Sazişi veriləcək

    8. Skyward Federal - SELinux Policy Server Linux Kernel Modulu

    Skyward Federal

    Skyward Federal, həssas məlumatların işlənməsini dəstəkləyən etibarlı bulud-qaynaşma texnologiyalarının inkişafına rəhbərlik edir. Müştərilərimizin təhlükəsiz və səmərəli işləməsinə kömək etmək üçün məxfilik mərkəzli tətbiqlərlə yanaşı, müasir və etibarlı bir təhlükəsizlik infrastrukturu hazırlayırıq.

    NCSU komanda layihəsi, təhlükəsiz çox kirayəli bulud hesablamasının yeni nəslinin inkişafına və təkmilləşdirilməsinə yönələcək. Xüsusilə, NCSU komandası, təhlükəsizliyi düşünən müştərilər üçün sürətli tətbiqetməni və yerləşdirməni asanlaşdırmaq və məlumatların təhlükəsiz nəqlini və ayrılmasını asanlaşdırmaq üçün bir platforma və boru kəməri inkişaf etdirməyə kömək edəcək.

    Problem bəyanat

    SELinux, məlumatların məxfiliyinə və bütövlüyünə çox güvənən sənaye sahələrində təhlükəsiz məcburi giriş nəzarətini (MAC) təmin etmək üçün istifadə olunur. SELinux, bir qovşaqdan digərinə məlumat ötürərkən bir çox qovşaqların eyni təhlükəsizlik siyasətindən istifadə etdiyini güman edir. SELinux -da birdən çox maşın arasında təhlükəsizlik siyasətini əlaqələndirmək üçün heç bir mexanizm yoxdur. Bu koordinasiya çatışmazlığı, SELinux istifadə edən hər hansı bir üfüqi miqyaslı sistemin həm təhlükəsizliyi, həm də performansı üçün problem yaradır, buna görə də SELinux təhlükəsizlik siyasətlərinin sistemdəki bütün qovşaqlarda vahid şəkildə tətbiq olunmasını təmin etmək üçün bir üsul olmalıdır.

    Layihəyə Baxış

    Birdən çox qovşaqda koordinasiya etmək üçün Linux kernel modulu olan bir SELinux siyasət serverinin hazırlanması lazımdır. Bu siyasət serveri, Windows Şəbəkə Siyasəti Serverinə bənzər şəkildə işləyəcək ki, təhlükəsizlik siyasəti qovşaqlar arasında dəyişməz şəkildə tətbiq olunsun.

    NCSU tələbələri əvvəlcə Linux kernel modullarının inkişafı ilə yanaşı SELinux təhlükəsizlik siyasəti modullarının hazırlanması ilə də tanış olacaqlar. Skyward bu prosesə kömək etmək üçün qaynaqlar təmin edəcək.

    Siyasət Serveri iki komponentdən ibarət olacaq: server və müştəri. Server bir SELinux siyasət modulu üçün mənbə kodunu ehtiva edən tək bir maşında yerləşdiriləcək. Server, a -ı tərtib etmək və basmaq qabiliyyətinə malik olacaq .pp faylını (SELinux siyasət paketi) müştəri işləyən birdən çox maşına göndərin. Müştəri bu dəyişiklik barədə məlumatlandırılacaq və siyasət modulunu yerli qovşağa quracaq.

    Layihənin Faydası və Faydası

    Uğurlu layihə, SELinux vasitəsilə bir çox istifadəçi növü arasında məlumatların ayrılmasını təmin etmək üçün məcburi giriş nəzarətinə əsaslanan istehsal çoxlu qovşaq tətbiqləri ilə daha çox siyasət serverinin inkişafı üçün prototip rolunu oynayacaq. Tələbələr təhlükəsiz proqram təminatı inkişaf etdirməkdə davam etdikcə inkişaf zamanı bilik və təcrübə əvəzolunmaz olacaq.

    Məhdudiyyətlər

    • Baş dizayn qrupu, başqa bir OS razılaşdırılmadığı təqdirdə, CentOS 7 və ya CentOS 8 işləyən virtual maşınlarda Linux kernel modulları olaraq SELinux siyasət serverini və müştərilərini inkişaf etdirməlidir.
    • Siyasət serveri və müştəri Linux kernel modulları olaraq hazırlanmalıdır. Bu modulların yazılması üçün C və ya Rust dilinin istifadə edilməsi tövsiyə olunur.
    • SELinux siyasət modulları SELinux Kernel Siyasət Dilindən istifadə edilməklə yazılmalıdır.

    9. Amerika Bankı - Dost olmayan Kod üçün GitHub -u araşdırın

    Fon

    Bank of America milyonlarla müştəriyə bank xidmətləri göstərir. Təhlükəsizlik bölməsində, həmin müştərilərin aktivlərini mümkün olan bütün kiberhücumlardan qorumaqdan məsuldur.

    Problem bəyanat

    Banka potensial zərər verə biləcək kodlar üçün GitHub deposunda müntəzəm bir kadans axtarın.

    Layihə

    Zərərli məzmun üçün GitHub -dan endirilən kodu təhlil etmək üçün məhsullar mövcuddur. Maraqlandığımız şey, bank maraqlarına daha spesifik olmaqla yanaşı, bir az da irəli gedir. GitHub -da banka zərər verə biləcək məzmun ehtiva edən kodu axtarmaq istəyirik. Buna nümunələr: Bank of America və rsquos tətbiqinə bənzər bir tətbiqin inkişafı, hər hansı bir kodda BofA & rsquos loqotipinin və ya adın istifadəsi, BofA ilə əlaqəli etimadnamələrinin istifadəsi (məsələn, banka daxil olmaq üçün istifadə olunan sərt kodlu istifadəçi adı/şifrələr) aktivlər və ya BofA işçilərinə və ya müştərilərinə aid ola bilər) və ya bank aktivlərinə daxil olmaq və ya banka hücum etmək üçün nəzərdə tutulmuş kimi görünən hər hansı bir kod.

    Əsas funksionallıq:

    • Mümkün bank arayışlarını GitHub vasitəsi ilə axtaran kod hazırlanmalı və buna görə də bu miqyasda işləməlidir.
    • Şagirdlər şübhəli kod müəyyən edildikdə (ekran və/və ya e -poçt vasitəsilə) xəbərdarlıq edə biləcək kod hazırlamalı olacaqlar. Alert, kodun niyə bir xəbərdarlıq başlatdığını göstərməlidir.
    • Davamlı qaçmağı bacarmaq lazımdır.
    • İlkin hədəf: bank şərhlərinin (məsələn, BofA, Bank of America və s.) Kod şərhlərində və ya hətta kodda (məsələn, dəyişən bir ad olaraq BofA və ya bankofamerica.com saytına istinadlar) müntəzəm ifadəsi ilə identifikasiya
    • BofA -ya birbaşa istinad edə bilməyən, lakin banklara hücum etmək üçün ümumi olduqlarını göstərən və ya əvvəlcə digər banklara yönəlmiş, lakin BofA -ya qarşı yönəldilə bilən şərhləri ehtiva edə bilən kod
    • Digər kod təhlili növləri ilə asanlıqla genişləndirilə bilməsi üçün modul olmalıdır

    Ön interfeys:

    • Tarixi məlumatlara daxil olan bir veb səhifəsi olaraq göstərin
    • Müəyyən edilmiş tətik kodlarının növlərini, hər bir kateqoriyadakı depoların sayını, bu kateqoriyaya ən son əlavə edilmə tarixini və s.
    • Müəyyən edilmiş hər bir fərdi depo üçün təfərrüatları öyrənmək bacarığı təmin edin
    • Test, məsələn, müxtəlif növ tətik kodlu tələbələr tərəfindən qurulan ümumi bir GitHub anbarına və GitHub anbarının bir alt qrupuna qarşı həyata keçirilə bilər.

    Stretch Məqsədləri/İşlevselliği:

    • Bank və rsquos loqotipi olan kod
    • BofA & rsquos mobil tətbiqini təqlid edə biləcək kimi görünən mobil tətbiqlər üçün kod
    • Banka yönəldilən kod (məsələn, bankı xüsusi olaraq hədəf almaq üçün hazırlanmış parol tahmin vasitələri)

    Texnologiyalar və digər məhdudiyyətlər

    • Texnologiyalar: Python, GitHub API və potensial olaraq tələbələr tərəfindən tövsiyə edildiyi kimi.
    • Məhdudiyyətlər: konteynerə daxil edilmədikdə nəticələri banka idxal etmək daha asandır.
    • Digər məhdudiyyətlər: Tələbələr bir NDA imzalamalı və banka IP hüquqları verməlidirlər.

    10. CSC Kodlaşdırma Təyinatı Əlaqəsi - Kodlaşdırma Tapşırıq Əlaqə Sistemi

    Problem bəyanat

    Vaxtında, mənalı tapşırıq rəyi, giriş proqramlaşdırma kurslarına yazılan tələbələr üçün çox vacibdir. NCSU -da bəzi CSC116 müəllimləri NCSU GitHub depoları vasitəsi ilə tələbələr üçün avtomatik rəylər tətbiq etməyə başladılar. Əlaqə tez -tez Checkstyle məsələlərinin təsvirlərini, düzgün layihə quruluşunun istifadə edildiyini və tələbə kodunun müəllim heyəti dizaynına uyğun olub olmadığını göstərən mesajları ehtiva edir. Əlaqə yaradılmasını asanlaşdırmaq üçün Jenkins davamlı inteqrasiya serveri pərdə arxasında istifadə olunur (tələbələr avtomatlaşdırmanın olduğunu bilirlər, lakin davamlı inteqrasiya serverindən xəbərsizdirlər). Əlaqə hazırda hər bir tələbə anbarının & lsquofeedback & rsquo şöbəsi vasitəsi ilə düz mətn formatında verilir, lakin daha strukturlaşdırılmış/ətraflı rəy hesabatları həm tələbələr, həm də müəllim heyəti üzvləri üçün faydalı ola bilər.

    Layihə

    Bu layihə üçün, baş dizayn qrupu, giriş proqramlaşdırma kurslarında tələbələr üçün avtomatlaşdırılmış, mənalı rəyləri asanlaşdırmaq üçün bir veb tətbiqi yaratmalıdır. Sistem müəllim heyətinin üzvlərinə imkan verməlidir:

    • Kurs siyahısını yükləyin
    • Tapşırıq təfərrüatlarını yaradın və konfiqurasiya edin
    • Tələbə performans/irəliləyiş hesabatlarına baxın

    Sistem şagirdlərə imkan verməlidir:

    • Hər hansı bir kompilyator xətası haqqında rəyi nəzərdən keçirin
    • GitHub kataloq quruluşu/məzmunu haqqında rəyi nəzərdən keçirin
    • JUnit test hadisəsi statistikasını nəzərdən keçirin
    • Checkstyle pozuntularını nəzərdən keçirin

    Texnologiyalar

    Bu layihə üçün Java tələb olunan əsas dildir.

    11. CSC Kodlaşdırma Təyinatı İdarəetmə - Kodlaşdırma Təyinat İdarəetmə Sistemi

    Problem bəyanat

    Proqram inkişafını asanlaşdırmaq üçün sənayedə davamlı inteqrasiya vasitələri istifadə olunur. NCSU -da, bir neçə lisenziya kursu, proqram mühəndisliyinin ən yaxşı təcrübələrini təşviq etmək üçün versiya nəzarəti, davamlı inteqrasiya və digər vasitələrdən istifadə edir. Bununla birlikdə, bu vasitələri akademiyada istifadə etmək üçün uyğunlaşdırmaq və alətləri fərqli kurslar üçün konfiqurasiya etmək çox vaxt aparan və çətin ola bilər. Məsələn, 250 tələbə olan bir kursda, hər bir kodlaşdırma tapşırığı 250 fərqli depo yaratmaq, 250 unikal Jenkins iş yeri yaratmaq, depoları son tarixdən sonra bağlamaq, qiymətləndirmək üçün lazım olan məlumatları çıxarmaq və rəy PDF yaratmaq kimi vəzifələri idarə etmək üçün birdən çox skriptdən istifadə etməyi tələb edə bilər. tələbələr üçün sənədlər. Hər hansı bir tələbə bir tapşırıq üçün fərdi uzantılar tələb edərsə, müəllim heyətinin bir üzvü, depoları yenidən açmaq/bağlamaq, qiymətləndirmə məlumatlarını almaq və PDF rəy sənədləri yaratmaq üçün lazım olan addımları əl ilə yerinə yetirməlidir.

    Layihə

    Bu layihə üçün, yüksək səviyyəli dizayn qrupu, GitHub versiya nəzarətindən və Jenkins davamlı inteqrasiya serverlərindən istifadə edən kurslar üçün tapşırıq idarəçiliyini asanlaşdırmaq üçün bir veb tətbiqi yaratmalıdır. Xüsusilə, proqram müəllim heyətinin üzvlərinə imkan verməlidir:

    • Kurs siyahısını yükləyin
    • NCSU GitHub -da hər bir tələbə üçün depolar yaradın
    • Vaxt keçdikdən sonra depoları bağlayın
    • Hər bir tələbə anbarı üçün Jenkins iş yerləri yaradın
    • Fərdi tələbə uzantılarını aktiv edin
    • Qiymətləndirmə, qiymətləndirmə və oxşarlığın aşkarlanması üçün lazım olan məlumatları əldə edin

    Texnologiyalar

    Bu layihə üçün Java tələb olunan əsas dildir.

    12. EcoPRT -Çox Avtonom Avtomobil Donanması İdarəetmə Serveri və Simulyasiyası

    EcoPRT @ NCSU haqqında

    Avtonom nəqliyyat vasitələri texnologiyası yetişir və avtobus və dəmir yolu kimi ənənəvi tranzit sistemlərinə alternativ təklif edə bilər. EcoPRT (iqtisadi Şəxsi Sürətli Tranzit), eyni anda bir və ya iki sərnişin daşıyan muxtar nəqliyyat vasitələri olan ultra yüngül və aşağı qiymətli tranzit sistemidir. Sistem xüsusi bələdçi yollarına malik ola bilər və ya alternativ olaraq nəqliyyat vasitələrinin dayanmadan birbaşa təyinat yerinə yönəldildiyi mövcud yollarda gedə bilər. Üstünlüklərə aşağıdakılar daxildir:

    • İkili rejim və mövcud yollar və yollar, mövcud tranzit həllərindən daha aşağı infrastruktur xərcləri ilə yüksək yollara əlavə olaraq aşağı quraşdırma xərcləri üçün də istifadə edilə bilər.
    • Kiçik bir ümumi ayaq izi və ətraf mühitə daha az təsir göstərir, buna görə bələdçi yolu demək olar ki, hər yerə gedə bilər.

    Tədqiqat işi olan EcoPRT, insanları şəhər ətrafında gəzdirmək üçün kiçik, çox yüngül, avtomatlaşdırılmış nəqliyyat vasitələrinin aşağı qiymətli, enerjiyə qənaət edən bir sistem kimi istifadəsini araşdırır. Bu günə qədər tam ölçülü bir prototip vasitəsi və əlaqədar test yolu quruldu. Bir nümayiş layihəsi üçün, Centennial kampusunun bir hissəsində 5 və ya daha çox nəqliyyat vasitəsindən ibarət bir donanma idarə etməyi hədəfləyirik. Vehicle Network serveri bütün nəqliyyat vasitələri üçün mərkəzləşdirilmiş rabitə və nəqliyyat vasitələrinin marşrutlaşdırma həlli kimi xidmət edəcək.

    Arxa plan və Problem Bildirimi

    Centennial Campus-da çox avtomobilli canlı pilot sınağı keçirmək məqsədi ilə, nəqliyyat vasitələrini istiqamətləndirmək və istifadəçilərlə qarşılıqlı əlaqə yaratmaq üçün Vehicle Network Controller (VNC) və əlaqəli Robot Əməliyyat Sistemi (ROS) vasitə müştəri proqramı yaratmaqdır. . Zəhmət olmasa həllin server arxitekturasını göstərən aşağıdakı memarlıq diaqramına baxın. VNC, bir avtomobil parkını idarə edəcək, gəzinti istəkləri üçün lazım olduqda göndərəcək və lazım olduqda doldurulacaq. İstifadəçilərə həm bu istəkləri vermək, həm də şəbəkəni idarə etmək üçün qarşılıqlı əlaqə təmin edəcək.

    VNC üzərində iş 2020 -ci ilin yazından başqa bir yüksək səviyyəli dizayn qrupunun işinin davamı olardı. Mövcud VNC həlli idarəçilərə/istifadəçilərə və nəqliyyat vasitələrinin müştərilərinə serverlə fərqli yollarla qarşılıqlı əlaqə qurmaq üçün bir vasitə təqdim edir. Bu nöqtədə hələ də bir alfa mərhələsi sayılsa da, fiziki nəqliyyat vasitələri ilə istifadəyə hazır olması üçün VNC -nin daha da inkişaf etdirilməsinə ehtiyac var.

    Layihənin təsviri

    Layihənin məqsədləri bir bütün olaraq sistemi daha da təkmilləşdirmək, təkmilləşdirmək və sınaqdan keçirməkdir. Xüsusi məqsədlər aşağıda təsvir edilmişdir:

    1. nəqliyyat vasitələrini istəyə görə təyin etmək üçün məntiq qurmaq.
    2. yenilənmiş avtomobilin vəziyyətini cari saxlamaq üçün verilənlər bazası yaradın
    3. təqlid edilmiş nəqliyyat vasitələrinin nümunələrini hazırlayın. Bunun ya bir docker, bir virtual OS və ya Linux -da birdən çox nümunə işləyərək necə edilə biləcəyini düşünün
    4. şəbəkədə birdən çox avtomobili simulyasiya edin. Tam simulyasiya etmək üçün işlənməli olan bir sıra kiçik detallar var:
      1. gəzinti istəklərini təqlid edin
      2. birdən çox avtomobil nümunəsi yaradın
      3. müvəffəqiyyət üçün KPI və rsquos inkişaf etdirin (yəni dayanma vaxtı, gəzinti vaxtı)
      4. avtomobilin marşrutlaşdırma alqoritmini araşdırın

      Avtonom Uber şəbəkəsinin daha kiçik bir versiyası kimi, nəqliyyat vasitələri də müəyyən bir sahə və ya sabit bir marşrutla məhdudlaşır və sürücünün istəklərinə uyğun olaraq istiqamətləndirilməlidir. Həllini daha da inkişaf etdirmək və simulyasiya etmək, kampusda birdən çox EcoPRT nəqliyyat vasitəsinin pilotu olmaq üçün ümumi bir hədəf olan növbəti addım olardı.

      Texnologiyalar və digər məhdudiyyətlər

      NodeJS, Python, NPM, MySQL, Neo4j, Bootstrap, AngularJS, Express, HTML5, REST, Socket.io, CasperJS, Mocha, C ++, ROS

      Linux serveri, veb əsaslı mobil, virtualizasiya

      13. Əlavə 1 - Nişan Şəbəkəsi Sağlamlığı

      Fon

      LexisNexis & reg InterAction & reg, biznesin inkişafı, marketinqi və hüquqi və peşəkar xidmət firmaları üçün müştəri məmnuniyyətini artıran çevik və bənzərsiz dizaynlı bir CRM platformasıdır. InterAction, kimin, təcrübə sahələrinin, aktual işlərin və məhkəmə işlərinin və ndashin kim olduğunu bilən və firmanın əsas əlaqələrini və ndash'ın izlənməsini və xəritələndirilməsini əhəmiyyətli dərəcədə yaxşılaşdıran xüsusiyyətlər və funksionallıq təmin edir və bu məlumatı marketinq avtomatlaşdırması, fürsətlərin idarə edilməsi, müştəri görüşü vasitəsi ilə təsirli hala gətirir. və fəaliyyətin idarə edilməsi, məsələ və nişanların izlənməsi, yönləndirmə idarəçiliyi və əlaqələrə əsaslanan iş inkişafı.

      Müvəffəqiyyətli biznes inkişafının açarı, potensial müştərilərlə əlaqələrinizin gücünün və bunun zamanla necə dəyişməsidir.

      LexisNexis InterAction & reg, görüşlər, telefon danışıqları və e -poçt mübadiləsi əsasında iki şəxs arasındakı əlaqənin gücünü hesablayan bir alqoritmə malikdir.

      Böyük bir hüquq firmasında işləyərkən, firmanın bütün üzvləri ilə bir şirkətin bütün işçiləri arasındakı əlaqənin ümumi sağlamlığı baxımından daha əhəmiyyətli olanı (məsələn: möhkəm, kövrək və s.)

      Fərqli hüquqi təcrübə qrupları arasında əlaqədə boşluqlar ola bilər və ya bir neçə əsas oyunçunun iştirakından həddindən artıq asılılıq ola bilər.

      Layihə

      Böyük bir hüquq firmasından anonim bir nişan məlumatları aldıqdan və fərqli şirkətlərdəki işçilərlə fərdi əlaqələri göstərdikdən sonra, bir həll firma ilə bir şirkət arasındakı nişan qrafiklərində təkrarlanan nümunələri müəyyən edərək təsnif edər və risklər axtarar (məs. əsas düyün çıxarılsın) və ya imkanlar (məsələn, bir sahədə nişan və ya təcrübənin digərini gücləndirmək üçün istifadə oluna biləcəyi). Mövcud bir sistem, mövcud layihə üçün yenidən istifadə edilə bilən kiçik əlaqələr şəbəkələrini görüntüləyir .

      Bu layihənin bir hissəsi olaraq Maşın Öyrənməsinin bəzi elementlərinin lazım olacağı gözlənilir.

      Dəstək, LexisNexis -də Məhsul İnkişafı və Məlumat Elm qrupları tərəfindən təmin ediləcək.

      Məlumat mənbələri

      Təcrübə sahəsini və şirkətini təyin etmək üçün metadata ilə birlikdə anonim bir nişan məlumat dəsti veriləcəkdir.

      Texnologiya

      Komanda hər hansı bir Javascript, Python və C#qarışığı ilə texnologiya yığınını seçə bilər.

      Angular 9, hər hansı bir veb əsaslı ön uç üçün istifadə edilməlidir.

      Ngx-çizelgeleri və D3, lazım olan hər hansı bir görselleştirme üçün istifadə edilməlidir.

      14. Merck - Hüquqların İdarə Edilməsi

      Merck haqqında

      Merck'in Vizyonu, dünyada həyatını xilas edən və yaxşılaşdıran yenilikçi məhsul və xidmətləri kəşf etmək, inkişaf etdirmək və təqdim etməkdir. Merck -in İT kiber təşkilatı, texnologiyamızın kənar şəxslərdən icazəsiz qorunmasını təmin edərək Merck -in qaynaqlarını, proseslərini və xəstələrini qorumaqla məsuldur.

      Layihə

      Merck, hüquqların idarə edilməsi üçün (proqram təminatına, alətlərə, qaynaqlara və s. Girişi idarə etmək üçün) veb əsaslı bir tətbiq hazırlamaq istəyər. Baş dizayn qrupu, hüquqların idarə edilməsi sistemi üçün bir komponent arxitekturası yaradacaq, sonra sponsorla birlikdə komponentləri tətbiq etməyə başlayacaq.

      Fikir bir neçə əsas məqama əsaslanır.

      • Həm iş istifadəçiləri, həm də tərəfdaş nümayəndələr istifadəçilərin hüquqlarının təmin edilməsini idarə edə bilməlidirlər
      • Hüquqların idarə edilməsi sistemi istənilən vaxt, istənilən vaxt kimin hansı mənbəyə təminat verdiyini müəyyən edə bilməlidir.
      • Nişan qaydaları, tədbirlərin hazırlanması ilə bağlı metadatada edilən dəyişikliklərin tarixi təminata aşağı təsir göstərib -göstərmədiyini müəyyən edir (məsələn, təlimin tələbləri yerinə yetirilənə qədər mənbənin təkmilləşdirilməsi mənbəyə girişi məhdudlaşdıra bilər).
      • Təminat tədbirləri aktiv bir iş axını içərisində yaşayır və bu iş hüququ ləğv olunana qədər açıq qalır (məsələn, kimyaçı və xüsusi mənbələrə giriş/hüquq, kimyaçı və rsquos Merck ilə 6 aylıq əlaqənin sonunda silinir)
      • Sistem, istifadəçinin başlatdığı təminatı (məsələn, bir istifadəçi müəyyən bir sistemə giriş tələb edir) və hadisəyə əsaslanan təminatı idarə edə bilməlidir (məsələn, yeni bir işçi və ya şirkətlə müqavilə bağlanır və müvafiq sistem qaynaqlarına avtomatik olaraq giriş verilir).

      Bina Blokları

      Bir hüquq idarəetmə sisteminin aşağıdakı komponentləri haqqında ilk sponsor görüşü zamanı daha ətraflı nümunələr veriləcəkdir:

      • Kit & ndash Kit, hüquqa həqiqi təminatı həyata keçirən memarlıq təbəqəsidir.
        • Müəssisə və ndash müəssisə iş qaydaları bu hüququ təmin etmək üçün (məsələn, bir istifadəçi əlaqəli bir təlim kursu bitməyincə sistem qaynağına verilə bilməz, istifadəçisi öz şirkəti tərəfindən açıqlanmayan bir müqavilə imzalanana qədər heç bir sistem qaynağına verilə bilməz. )
        • Bu hüququ təmin etmək üçün tətbiq və ndash tətbiqi iş qaydaları
        • Bu hüququ təmin etmək üçün API və ndash API və ya iş axını
        • Nişan təfərrüatları (İş Sahəsi, İş Sahibi, Həm işçi, həm də nümayəndə, səlahiyyət müddəti və s.)
        • Nişan rolları (rollar paket şablonlarına təyin edilir və ehtiyacdan asılı olaraq düzəldilir)
        • Nişan qaydaları (tarixçəni düzəltməmək, irəliləməyi tənzimləmək və ya meta məlumat dəyişikliyinə əsaslanaraq təminatı tənzimləməmək. Və ya nişanın başlama tarixinə qədər heç bir şey etməmək üçün nişan, nişanın bitmə tarixində nə etməli)

        Bu tətbiq üçün bir neçə interfeys nəzərdə tuturuq:

        • Tətbiq Sahibləri öz hüquqları üçün dəstlər hazırlayacaqlar
        • Müəssisə idarəçiliyi, dəstlər üçün müəssisə qaydalarının yaradılmasına sahib olacaq
        • Nişan aparıcıları, nişanların rolu aydınlaşdıqca dəstləri paketlərə yığacaqdı
        • Nişan Sahibləri nişanları quracaqlar
        • Təminat Nümayəndələri istifadəçiləri nişana hazırlayacaq və onlara tapşıracaqlar

        15. Tate - Puzzle Piece Finder Tətbiqi

        Arxa plan və Problem Bildirimi

        Son vaxtlar özünüzü çoxlu tapmacalar bir araya gətirməkdə görürsünüzmü?

        Yapboz tapmacalarını bir araya gətirmək üçün tətbiq olunan ümumi bir strategiya əvvəlcə tapmacanın kənarlarını formalaşdırmaqdır. Sərhəd yaratmaq üçün bütün 'düz kənar' parçaları tapmaq çətin ola bilər! Həqiqətən də o böyük 1000 -dən çox bulmacada itirə bilərlər. Hər parçaya toxunduqdan sonra da kənar hissələri tapmaq çətin olur.

        Layihənin təsviri

        Tələbələrin, mobil cihaz və rsquos kamera vasitəsilə istifadəçilərə tapmaca parçalarında düz kənarları tapmalarına kömək edə biləcək genişləndirilmiş reallıq mobil tətbiqi yaratmasını istərdik. Düz bir kənar parçası tapıldıqda, kamera görünüşü, parçaları və rsquo konturunu işıqlandırmaq kimi müəyyən vizual göstərişlərlə müəyyən edilmiş parçaları vurğulaya bilər.

        Kenar parçaları tapmağın xaricində, bəlkə də bu tətbiq, lövhədə dörd tərəfi olan (tapmaq asandır) bəlkə də yalnız bir açıq tərəfi (çətin) olan açıq bir parçanın taramasını çəkə bilər. Bu açıq yuvalar taranaraq kilidlənə bilər və sonra uyğun olanları tapmaq üçün mövcud parçalarla müqayisə oluna bilər. Bu əsərin bənzərsiz konturuna əsaslana bilər, eyni zamanda uyğunluq ehtimalını artırmaq üçün vizual xüsusiyyətlər də daxil ola bilər.

        Texnologiyalar və digər məhdudiyyətlər

        Tələbələr bu problemi həll etmək üçün uyğun texnologiyaları tapmağa və istifadə etməyə dəvət edirik!

        TƏLƏBƏLƏR KOMANDA İSTİFADƏ EDİLƏN SPONSORA İP ÜZRƏ İMZA VERMƏLİ OLACAQ.

        16. ABŞ Ordusu 18 -ci Hava Desant Korpusu 1 - MoodSwing

        Fon

        XVIII Hava -Dəniz Kolordu, böhranı (süni və ya təbii) və ya dünyanın hər hansı bir yerində hava, quru və ya dəniz vasitəsi ilə təcili əməliyyatlara cavab olaraq hazır Ordu qüvvələrini yerləşdirir, zərurət yarandıqda zorla girir, böhranı formalaşdırır, cilovlayır, mübarizə aparır, qalib gəlir və uğurla həll edir. Corps qərargahı, Ordu, Birgə və ya Birləşdirilmiş İş Qüvvələrinin qərargahı olaraq missiya komandanlığını təmin edir.

        XVIII Hava -Dəniz Qoşunları & Amerika və rsquos Ehtiyat Korpusu və rdquo, Fort Bragg isə Ordu və Hərbi Hava və Xüsusi Əməliyyat Qüvvələrinin evidir. Amerikanın tələsik silahlı qüvvələrinə ehtiyacı olanda ilk telefon zəngləri bizə gəlir. Ordu və rsquos strateji cavab qüvvəsi olan Korpus, böhranı yerləşdirmək, mübarizə aparmaq, qalib gəlmək və uğurla həll etmək üçün bacarıqlı, sərt və gecə -gündüz hazırdır. Fort Bragg, Amerika və rsquos Havadan və Xüsusi Əməliyyatlar döyüşçülərinə və ailələrinə dünya səviyyəli dəstək verən Ordu və rsquos flaqman güc proyeksiya platformasıdır.

        Problemli Statenlert

        XVIII Hava -Dəniz Qüvvələri, yerdəki anlayışları formalaşdıran və missiyanın müvəffəqiyyətini təmin edən müsbət və təsirli təsirləri sürətlə qazanmaq və saxlamaq üçün kifayət qədər müvafiq sosial kontekstə malik dünyanın hər hansı bir yerində bir anda necə yerləşdirir?

        XVIII Hava -Dəniz Korpusu və rsquo missiyası, xəbərdarlıq edildikdən bir neçə saat sonra qeyri -sabit və təhlükəli ərazilərə qoşun göndərməkdir. Bu missiyanın sürətli reaksiya xarakteri sayəsində bölünmənin yerləşdirmə zonaları haqqında dərin bir anlayışa sahib olması kritik əhəmiyyət kəsb edir. Belə anlayış çoxşaxəlidir: hava və iqlim, coğrafi, siyasi, iqtisadi və sosial mülahizələr. Bu problem sahələrinin əksəriyyəti üçün yaxşı qurulmuş sistemlər çox olsa da, sosial medianın amansız tempinin hökm sürdüyü bir dünyada sosial iqlimin müəyyən edilməsi getdikcə daha da mürəkkəbləşir. Kiçik münaqişələr üçün, hətta müəyyən sosial dairələrdə müəyyən mövzulara olan inancların, mövqelərin və münasibətlərin müəyyən edilməsinin mikroskopik səviyyəsinə çata bilər. Əlavə olaraq, əsasən buzlaq kadansında dəyişən ərazinin coğrafiyasından fərqli olaraq, sosial əhval -ruhiyyə və quruluşlar son dərəcə dinamikdir. Bu sosial iqlimi ələ keçirmək idarəçilərin və əsgərlərin böhrana reaksiya verdikləri zaman inanılmaz dərəcədə güclü bir məlumatdır.

        Layihə

        Müəyyən bir coğrafi bölgədəki mövcud sosial duyğuların/narahatlıqların, təsir edənlərin, kanalların və vasitələrin (yəni sosial media yazılarının) həm siyahıya əsaslanan, həm də coğrafi görünüşünü təmin etmək üçün veb əsaslı bir tətbiq hazırlayın. Bu cür tvitlər və işarələr emosional və duyğu mətni təhlili ilə əlavə edilməlidir. Başlanğıcda, layihə izləniləcək hesabların siyahısını alacaq, sistem sosial şəbəkələrə və coğrafi bölgələrə əsaslanaraq əlavə hesablar axtarmalıdır. Sistem xarici dilləri ingilis dilinə çevirmək üçün avtomatik mətn tərcümə xidmətlərindən istifadə etməlidir.

        Tələblər:

        • Duyğu təhlili
        • Yerli narahatlıqlar
        • Əsas təsir edənlər (bunlar sülh dövründən böhrana keçə bilər)
          • hökumət və qeyri-hökumət
          • mövzu/mövzuya görə bölünmüşdür
          • demoqrafik olaraq bölünür

          17. Sənaye mühəndisliyi - Yeni Məhsul Təqdimat Oyunu

          İMKB haqqında

          Intel ilə əməkdaşlıqda olan və Milli Elm Vəqfi tərəfindən maliyyələşdirilən hazırkı layihəmiz, yüksək texnologiyalı sənayedə yeni məhsulların tətbiqinin idarə edilməsini dəstəkləmək üçün vasitələr hazırlamağa çalışır. Bu, bir çox muxtar mühəndislik və istehsal qrupunun əməkdaşlığını nəzərdə tutur. Layihə, həm tədqiqatçılara, həm də praktiklərə problemin mürəkkəbliyini və əməkdaşlığın təsirli bir həll yolunun əhəmiyyətini anlamalarına kömək etmək üçün rol oynayan bir oyun mühiti qurmağa çalışır.

          Arxa plan və Problem Bildirimi

          Yarımkeçirici istehsalçıları kimi yüksək texnologiyalı firmalarda yeni məhsul təqdimatlarında iştirak edən iki əsas təşkilati bölmə, İstehsalat (MFG) vahidi və bir sıra Məhsul Mühəndisliyi (ENG) vahidləridir. Hər bir Məhsul Mühəndisliyi vahidi, mikroprosessorlar, yaddaş, mobil və s. Kimi fərqli bir bazar seqmenti üçün yeni məhsullar hazırlamaqla yüklənir. İstehsalat vahidi Satış təşkilatından tələb proqnozlarını alır və tələbatı vaxtında ödəmək üçün cihaz istehsal etməklə yüklənir. İstehsal vahidində əsas məhdudiyyət, müəyyən bir ayda müəyyən sayda hər növ cihaz istehsal edilə bilən məhdud istehsal gücüdür. Məhsul Mühəndisliyi bölmələri, hesablama qabiliyyəti (dövrə simulyasiyası üçün) və dizayn işlərini yerinə yetirmək üçün ixtisaslı mühəndislərin sayı şəklində məhdud inkişaf mənbələrinə malikdir. Bu məhdudiyyətlərin hər biri, ilk təxmini olaraq, müəyyən bir ayda mövcud olan hər bir mənbənin məhdud sayda saatı olaraq ifadə edilə bilər.

          Məhsul Mühəndisliyi qrupları, satış qruplarının istəkləri əsasında yeni məhsullar hazırlayır. Bu prosesin birinci mərhələsi dizayn məkanında baş verir, tranzistor düzənliyindən başlayaraq tam məhsul simulyasiyası ilə başa çatır. İkinci mərhələ, post-silikon doğrulaması, bir sıra hardware prototiplərinin qurulması üçün Manufacturing şirkətinin istəyi ilə başlayır. Manufacturing bu prototipləri təqdim etdikdən sonra Engineering qrupu sınağa başlaya bilər. Bu, ümumiyyətlə səhvlərin aşkarlanması və dizaynın təmiri ilə nəticələnir, daha sonra təkmilləşdirilmiş dizaynın prototipləri üçün İstehsalata ikinci bir müraciət edilir. Yeni məhsulun yüksək həcmdə istehsalına başlamaq üçün iki dövr prototip testi, səhvlərin aşkarlanması və dizayn təmiri adətən kifayətdir. Xüsusilə mürəkkəb məhsullar və ya yeni texnologiya ehtiva edən məhsullar iki dövrədən çox tələb edə bilər.

          İstehsal və Məhsul Mühəndisliyi qrupları bir -birindən asılıdır. İstehsal tərəfindən Məhsul Mühəndisliyi qrupları üçün prototiplərə ayrılan tutum, gəlir gətirən məhsullar üçün istifadə edilə bilən tutumu istehlak edərək qısa müddətli gəliri azaldır. Digər tərəfdən, yeni məhsulların inkişafı prototip istehsal qabiliyyətinin olmaması səbəbindən gecikərsə, yeni məhsullar inkişaf etdirilməsini vaxtında tamamlamayacaq və firma satıla bilən məhsullarsız qalacaq və rəqabətə həssas olacaq.

          Layihənin təsviri

          Tələbələrin MFG və ya ENG menecerləri olaraq resursların ayrılması ilə bağlı qərar qəbul etmək üçün rol oynadıqları bir təhsil kompüter oyunu inkişaf etdirməyə çalışırıq. Oyunun ilkin modulu tək bir MFG və ENG vahidlərinə yönələcək.Resursların ayrılması ilə bağlı qərarlar əllə veriləcək və bu da oyunçulara açıq -aşkar görünən qərarların gözlənilməz təsirlərini hiss etməyə imkan verəcək.

          Oyunda bir MFG oyunçusu olacaq və birdən çox ENG oyunçusu ola bilər, hər oyunçu öz obyektiv funksiyasını maksimum dərəcədə artırmağa çalışır. Ekspozisiya naminə hər növdən bir oyunçunu və hər bir oyunçunun resurs bölgüsü qərarlarını verməli olduğu müəyyən bir müddət T -ni qəbul edəcəyik.

          Bir çox dəyişiklik mümkündür və daha mürəkkəb prosedurlar əlavə edərək oyunu inkişaf etdirmək üçün maksimum elastikliyi tərk etmək istərdik. NSF araşdırmamız, hər bir oyunçu tərəfindən təxmini həll yollarından əldə edilən qaynaq qiymətlərini optimallaşdırma modellərindən istifadə edən auksion prosedurlarına baxır - qiymətə əsaslanan bir koordinasiya həlli. Beləliklə, ideal olaraq bu oyun mühərrikini hərrac prosedurlarımızdan aldığımız həlləri simulyasiya etmək və əl ilə qərar qəbul edən oyunçuların əldə etdikləri həllər ilə müqayisə etmək üçün istifadə etmək istərdik.

          Texnologiyalar və digər məhdudiyyətlər

          Bunun üzərində işləyən iki əvvəlki qrupumuz var və hər ikisi də bizim üçün yaxşı olan veb əsaslı platformalardan istifadə etməyi seçmişlər, əsas məhsulu inkişaf etdirmək və inkişaf etdirmək üçün əvvəlki qrupların etdiklərinə əsaslanaraq hazırkı qrupa üstünlük verərdik. yeni funksionallıq, xüsusən də gözlənilməz inkişaf və ya istehsal problemləri kimi gözlənilməz hadisələr əlavə edin.

          Əvvəlki işlərə əsaslanaraq istifadəçilərə maksimum rahatlıq təmin etmək üçün veb əsaslıdır.

          18. Katabaz - EpicDemiologiya: İkinci Dalğa

          Katabasis haqqında

          Katabasis, Inc, 8-15 yaş arası uşaqlar üçün təhsil proqramlarının hazırlanmasında ixtisaslaşan qeyri-kommersiya təşkilatıdır. Missiyamız, fərdə uyğunlaşan, əməkdaşlığı inkişaf etdirən və böyümə və düşünmə zehniyyətini inkişaf etdirən rəqəmsal bir öyrənmə ekosistemi quraraq cəmiyyətimizin hər bir üzvündə öyrənməni asanlaşdırmaq, maraq oyatmaq və böyüməni sürətləndirməkdir.

          Arxa plan və Problem Bildirimi

          Müasir təhsil sistemi bizi problemləri kiçik parçalara ayırmağa və səbəb -nəticə əlaqələrini qurmağa öyrədir. Yalnız bu yanaşmaya güvənsək, bütün sistemi nəzərdən keçirməklə anlayışları itirmək riski (sistem düşüncə adlanan bir yanaşma). Sistem təfəkkürünün əsas istiqaməti, & ldquothe bütününün hissələrinin cəmindən böyük olmasıdır və sistem və rsquos quruluşu zamanla davranışları haqqında əlavə fikirlər verə bilər.

          Katabasis, orta məktəb yaşlı şagirdləri yoluxucu bir xəstəliyin bir əhali arasında yayılmasını təqlid edən bir təhsil oyunu ilə sistem düşüncəsindəki anlayışlarla tanış etmək istəyir. Şagirdlərin həyatı ilə əlaqəli bir mövzunu araşdıraraq, materialla əlaqəni artırmağı və sağlam davranışları təşviq etməyi ümid edirik.

          Keçən semestr, bu oyunun ilkin versiyası Unity oyun mühərriki istifadə edərək yaradıldı. Bura əsas şəhər planı, dövlət siyasət sistemi və mürəkkəb vətəndaş davranışı (şəxsi ehtiyaclara cavab vermək və vəzifələrə qərar vermək) daxildir. Bu sistemlər oyunun təməlini qoysa da, bu dövrdə Senior Design tərəfindən əlavə edilməsini istədiyimiz bir neçə əsas xüsusiyyət hələ də yoxdur. Xüsusilə, oyunçu hərəkətlərinin və oyun vəziyyətinin qeyd edilməsini və oyunçuların və potensial moderatorların öz şəhər planlarını yaratmaq qabiliyyətini görmək istərdik. Əlavə olaraq, prosedur məzmun istehsalından istifadə edərək, oyunda yeni səviyyələr yaratmaq qabiliyyətinə sahib olmaq istərdik, bu da şagirdlərə oyundakı kompleks sistemlər haqqında düşünmək və dərinləşdirmək üçün daha çox şəhər verərdi.

          Oyun, yoluxucu xəstəliklərlə məşğul olsa da, ən çox insan qruplarını idarə etməyə böyük əhəmiyyət verən növbəyə əsaslanan və real vaxt strategiya oyunlarına bənzəyir. Civilization oyun seriyası və Tycoon oyun seriyası oxşar mexanikaya sahib olan tanınmış seriallardır. 2020 -ci ilin payızında Yüksək Dizayn Komandası tərəfindən tamamlanan işin nəticəsi olaraq, bu layihə, mövcud oyunun təkmilləşdirilməsinə və bir giriş sistemi, bir şəhər qurucu funksiyası və prosedur səviyyələri səviyyəsinə əlavə olunmağa yönələcək.

          Bu məhsul bir çox auditoriyaya, xüsusən orta məktəb şagirdləri və təhsil tədqiqatçılarına xidmət edəcək. Orta məktəblilər üçün onlara maraqlı bir öyrənmə imkanı təqdim edəcək və sağlam davranışları təşviq edəcək. Öyrənmə anlayışlarını sınamaq və xəstəliyin yayılmasını yavaşlatan və etməyən şeyləri özləri görmək üçün sınaq və səhvdən istifadə edə biləcəklər. Bu, xalq sağlamlığı sisteminin mürəkkəbliyini yaradan bütün amilləri anlamalarına və həyatlarına tətbiq etmələrinə kömək edəcək.

          Təhsil tədqiqatçıları üçün bu sistem, bu simulyasiya vasitəsi ilə cavablandırıla bilən hipotezləri yoxlamağa kömək edə biləcək səviyyələr yaratmaq üçün bir platforma olaraq xidmət edəcək. Belə bir hipotezdən biri, şagirdlərin əvvəlcə karantin effektlərini görüb daha sonra daha az kəskin qoruyucu tədbirlərə (məsələn, KKD istifadə etmək) imkan verən səviyyələr görsələr, fərdi qoruyucu vasitələrdən (maskalar kimi, PPE) daha asan istifadə edəcəyi ola bilər.

          Layihənin təsviri

          Bu semestrdə, layihə qrupu, tələbələrə və akademik tədqiqatçılara oyun içərisində xüsusi ssenarilər yaratmağa imkan verən bir hərəkət qeyd sistemi və bir şəhər qurma xüsusiyyəti yaratmağa odaklanacak. Fəaliyyət qeyd sistemi oyunçuların oyun müddətində etdikləri bütün hərəkətləri izləyəcək, faktdan sonra öyrənmə prosesini daha yaxşı asanlaşdıracaq, həm də oyunçuya və digər maraqlı tərəflərə bəzi faydalı oyundan sonrakı məlumatları təqdim edəcək (müəllim , tədqiqatçı və s.). Şəhər qurma xüsusiyyəti istifadəçilərə izometrik bir şəbəkəyə müxtəlif binalar əlavə etmək və ya silmək imkanı verəcək.

          Oyunun təkrarlanmasını artırmaq üçün, Baş Dizayn komandasından, orta məktəb şagirdlərinin məhdudlaşdırma strategiyalarını sınamaq üçün praktiki olaraq məhdud olmayan mühitə sahib olması üçün prosedur qaydada yaradılan şəhərlər yaratmaları da istəniləcək. Yeni səviyyələrin şagirdlərdən yeni strategiyalar çıxarmağa çalışması, şagirdlərə yeni siyasətlər sınamasına kömək etməsi və fərqli şəhərlərin fərqli yanaşmalara necə ehtiyac duyduğunu daha dərindən düşünməsi də arzu olunandır. Layihənin əhatə dairəsi və vaxt məhdudiyyətləri içərisində qaldığından əmin olmaq üçün bunun üzərində işlədilən (giriş və şəhər tikintisindən sonra) son xüsusiyyət olmasını istərdik.

          İstifadəçi Təcrübəsinə Diqqət. İstərdik ki, bu komandadakı tələbələr orta məktəb şagirdləri ilə onlayn olaraq iki dəfə yüksək səslə düşünsünlər. Katabasis orta məktəb testlərini təmin edəcək. Birinci səsli düşüncə sessiyası ideal olaraq kursun orta nöqtəsi olardı (giriş və şəhər qurma xüsusiyyətlərinin tamamlanmasından sonra), ikinci düşüncə sessiyası isə kursun sonuna yaxın (prosedur məzmun yaratma həyata keçirildikdən sonra). Yüksək səslə düşünün sessiyası, oyun, UI təkmilləşdirmələri məlumatlandırmaq və siyasət və binalar üçün fikirlər yaratmaq üçün istifadə ediləcək oyunçuların rəyini öyrənmək üçün nəzərdə tutulmuşdur. Bu rəyi qiymətləndiririk çox çox və buna görə də komandanın oyunun inkişafında bunu nəzərə almasını istərdim. Yüksək Dizayn tələbələri, şəxsi təəssüratlara və sessiyalardan gələn rəylərə cavab olaraq, layihənin ikinci yarısına daxil ediləcək əlavə xüsusiyyətləri seçmək üçün Katabasis komandasının üzvləri ilə işləyəcəklər. Layihənin sonunda ikinci istifadəçi geribildirim tədbiri keçiriləcək (birinci tədbirlə eyni format) və Baş Dizayn qrupu, son çıxışlarının bir hissəsi olaraq, oyunun inkişafında təklif olunan növbəti addımların sənədlərini daxil edəcək.

          Real həyat məlumatlarının dəqiqliyi məqsəd deyil, lakin zamanla yüksək səviyyəli tendensiyalar simulyasiya edilmiş mühitdə yoluxucu xəstəliklərin nələr edə biləcəyini əks etdirməlidir. Məqsədimiz, real həyatı müəyyən etmək və əlaqələndirmək üçün oxşar saxlamaq, lakin oyunu və ya öyrənmə təcrübəsini asanlaşdırmaq üçün lazım olduğu qədər bənzərsiz saxlamaqdır. Katabasis, Yüksək Dizayn tələbələrinin təhsil məzmunu, istifadəçi rəy sorğuları, istifadəçi müqaviləsi formaları və s. İnkişaf etdirməsindəki hər hansı bir girişini alqışlayır, lakin layihəni əhatə dairəsində saxlamaq üçün bu işə özümüz rəhbərlik edəcəyik.

          Texnologiyalar və digər məhdudiyyətlər

          Oyun C#-də Unity Game Engine istifadə edərək həyata keçirilir. Hədəf platforması veb brauzerdir (Unity & rsquos WebGL Export istifadə edir), ancaq vaxt icazə verərsə onu mobil əlçatan etmək istəyirik. Çox güman ki, komandamızdan əvvəlcədən hazırlanmış bir sınaq mühitinə uyğunlaşmalarını və əlavə etdikləri yeni xüsusiyyətlər üçün bəzi möhkəm testlər hazırlamalarını istəyəcəyik.


          Fk məhdudiyyəti olmadan başqa cədvəldə varsa açarı yoxlayın

          "B" də yeni bir sətir əlavə edilməzdən əvvəl "a" da b.id_a olub olmadığını yoxlamaq istəyirəm. Normalda b.id_a saytına fk məhdudiyyəti əlavə edərdim. Problem b.id_a üzərindəki fk -ə istinad etmək üçün "a.id_a" ya bir pk və ya uq məhdudiyyəti əlavə etməyimə icazə verilməməsidir.

          Kimsə mənim üçün bir həll tapsaydı yaxşı olardı.

          Düzəliş: Niyə fk məhdudiyyəti yoxdur - Modelim məkan cədvəlləri və sadə postgres cədvəlləri olan ESRI Arc SDE -dən ibarətdir. Bəzi pg cədvəlləri sde uq identifikator sütununa istinad edir. Varsayılan olaraq SDE, postgresdəki məkan cədvəlinə heç bir pk əlavə etmir (sql serverində bunun səbəbini soruşmur). SDK tərəfindən standart olaraq bir pk əlavə edilsə, mənə heç bir kömək etməyəcək, çünki onu başqa bir uq sütununa dəyişdirməli olacağam, çünki standart pk sütun düymələri gələcəkdə dəyişə bilər (= WTF). ATM, SDE cədvəlinin pk -ni uq identifikator sütununa yeni əlavə etdim və ya dəyişdirdim, amma DB -ni bərpa edərkən əvvəlcə səhvlərim olduğu üçün (hazırda işləyir), ESRI dəstəyi mənə dəyişikliyimin və ya əlavə etdiyimi söylədi sütun bu səhvlərə səbəb ola bilər və ya gələcəkdə bəzilərinə səbəb ola bilər (çünki SDE bu pk -ni bilməyəcək). Mənim fikrimcə, pk -nin heç bir əhəmiyyəti olmamalıdır (çünki SDE bilməyəcək və istifadə etməyəcək) buna görə atm əlavə etdim və işləyir kimi görünür. Ancaq gələcək üçün təhlükəsiz tərəfdə olmaq istəyirəm və buna görə başqa bir ehtimal tapmalıyam.

          İstədiyim şey: fk məhdudiyyəti ilə eyni davranışa sahib olmaq yaxşı olardı - amma düşünürəm ki, oxşar bir davranış mümkün olmayacaq, çünki fks bunun üçün hazırlanmışdır.

          Əvvəldən tətik yazmağa çalışdım, amma səhv yanaşma olduğunu düşünürəm, çünki həmişə new.row -u geri qaytarmaq məcburiyyətindəyəm və dəyər yoxlanıldıqda heç bir şey daxil edilməsini istəmirəm ' t mövcuddur.

          Həm də heç bir əlaqədən istifadə edə bilmədim və ya fk -də yoxlaya bilmədim, amma mənim fikrimcə tbl -də səhv dəyərlərə sahib olmaq üçün yüksək risk olardı.

          Mümkün həll:

          Uq indeksi olan bir sütuna istinad edən və işləyən bir fk məhdudiyyəti əlavə etməyə çalışdım (thper to ypercube). Sənədə baxdım, ancaq bir uq indeksi olan bir sütuna istinad edən bir fk məhdudiyyəti əlavə etməklə bağlı heç bir şey tapa bilmirəm (pk və ya uq məhdudiyyəti yoxdur). Ən azından bir dərslikdə mümkün bir izahat tapdım

          Unikal bir məhdudiyyət, bir çox verilənlər bazasında olduğu kimi, PostgreSQL -də bənzərsiz bir indeks olaraq tətbiq olunur.

          Bu indeks xarici açar üçün yaxşı bir namizəd olmayacaq, ancaq xarici açarla istinad edə biləcəyiniz unikal bir indeks necə yarada biləcəyinizi göstərir.

          Bu sütunda bir uq məhdudiyyəti və ya uq indeksi istifadə edərkən sizə unikal dəyərlər verərkən, niyə bir fk məhdudiyyəti üçün "yaxşı namizəd" olmamalı olduğunu başa düşmürəm.

          docs pg uq məhdudiyyətindən:

          Unikal məhdudiyyətlər, bir sütunda və ya bir sütun qrupunda olan məlumatların cədvəldəki bütün satırlara görə unikal olmasını təmin edir.

          İndeks yaradıldıqda (məlumatlar artıq mövcuddursa) və hər dəfə məlumatlar əlavə edildikdə sistemin cədvəldə təkrarlanan dəyərləri yoxlamasına səbəb olur. Dublikat girişlə nəticələnəcək məlumatları daxil etmək və ya yeniləmək cəhdləri bir səhv yaradacaq.


          Bu buraxılışdan əvvəl bu səhvi aldım. Xüsusi ssenarimizdə, təşkilatın bir hesab üçün xarici bir şəxsiyyət olaraq avtomatik olaraq artan bir nömrəyə sahib olan əvvəlcədən mövcud bir Xüsusi Ayarı vardı. Bu səhvin tez -tez baş verməsinin səbəbi, vahid testlərinin bəzilərinin köhnə olması və köhnə API istifadə etməsidir. Problem, bu testlər asenkron işlədikdə və hər ikisi eyni zamanda bu Xüsusi Ayarı yeniləməyə çalışdıqda ortaya çıxdı. Bu, gördüyünüz UNABLE_TO_LOCK_ROW səhvinə səbəb olardı, çünki bir sinifdə artıq DB kilidi vardı. Bu xüsusi problemi həll etmək üçün, Xüsusi Ayarların öz nümunələrini düzgün yaratmaq üçün köhnə testləri yenilədik.

          Səhv başa düşmək olduqca qəribə idi, çünki gördüyünüz kimi, testlər bəzən təsadüfi idi, çünki bəzən işləyirdilər, digər vaxtlarda isə uğursuz olurdular.

          İndi yuxarıda təsvir etdiyim ssenari yalnız bir nümunədir. Bu cür səhvlər, iki sinif eyni obyektdən birini yeniləməyə çalışdıqda atıla bilər. Hər ikisi, məsələn, test üçün DB -dən bir əlaqə çəkən köhnə bir kodunuz varsa, eyni problem səbəbindən uğursuz ola bilərlər.

          Bu problemi həll etmək üçün uğursuz vahid testlərinizdən keçməlisiniz və heç birinin verilənlər bazasından mövcud məlumatları istifadə etmədiyinə əmin olmalısınız. Hər test işlədikdə məlumat modelini yenidən yaratmalısınız. Çox səmərəsizdir, lakin istehzalar təqdim olunana qədər indiyə qədər ən yaxşı təcrübədir (ümid edirəm ki, bunlar ən qısa zamanda gələcək). Beləliklə, verilənlər bazasında heç vaxt məlumat gözləmədiyinizə əmin olun. Vahid testiniz kontekstində həmişə özünüzü yaradın.


          29 iyun 2016, Çərşənbə

          Şəkil fayllarını oracle məkanında yükləmək üçün Geokettle -dən necə istifadə olunur

          Bir şəkil faylını fayl sistemindən bir oracle məkan bazasına necə yükləmək üçün bir nümunə axtarıram.


        • Şəkil faylını 'Shapefile Fayl girişi' addımı ilə yükləyirəm
        • WKT -ni şəkil sənədindən Həndəsəyə çevirmək üçün kalkulyator addımından istifadə edirəm
        • Verilənləri verilənlər bazasına yazmaq üçün Cədvəl çıxışından istifadə edirəm.
        • Hazırlanmış ifadədə (Həndəsə), java.sql.SQLException: 6 nömrəli [GEOM Geometry] səhvini təyin edərkən səhv yazan Cədvəl çıxış addımından bir səhv alıram: etibarsız məlumat növü

          Hədəf sütunu SDO_GEOMETRY tiplidir.

          Bir şəkil faylını oracle verilənlər bazasına yükləmək üçün yalnız 'Shapefile girişi' və 'Cədvəl çıxışı' tələb olunur, Geokettle hər şeyi daxildə idarə edir

          Forma fayl girişində şəkil faylını təyin edirsiniz və çıxışda forma faylının həndəsəsini (GeoKettle Sizin üçün həndəsəni müəyyənləşdirir) uyğun db sütununa xəritələyirsiniz.

          Nümunə görmək üçün Aşağıdakı XML -i kopyalaya və transformasiyanın qrafik sahəsinə yapışdıra bilərsiniz.

          Qgis - Seçilmiş çoxbucağın qalınlığını və amp rəngini dəyişdirmək varmı?

          QGIS - versiya 1.8.0. Seçilmiş bir çoxbucağın qalınlığını və rəngini dəyişdirmək üçün hər şey varmı?

          Qgis - GDAL (gdal.RasterizeLayer) istifadə edərək Rasterdən vektor: Çıxış Rasterində səhv (NAN dəyərləri ilə çıxış rasterinin yaradılması)

          Vektor təbəqəsini rasterləşdirmək üçün vektoru (shapefile) rasterə (tiff) çevirmək üçün gdal.RasterizeLayer metodunu sınadım. Ancaq NAN dəyərləri ilə raster çıxışı verir (tam qara şəkil). Səhv etdiyim yerdə kömək istəyərəm. Və bir atribut dəyərini shapefile -dən rasterə çap etmək istəyirəm və qalan dəyərlər outRaster -də sıfır olmalıdır.

          Burada bir raster faylı yaratdığını hiss edirəm, ancaq şəkil fayl dəyərləri ilə yaza bilmədi. Bu mövzuda bir az köməyə ehtiyacım var.

          Wms - OpenLayers 2.x -də zoom səviyyəsini necə məhdudlaşdırmaq olar

          Yalnız 3 səviyyəli zum əldə etmək istərdim (6 -cı səviyyədən 8 -ci səviyyəyə).

          Bunu etməyin bir yolu (bunun yeganə yol olub olmadığını bilmirəm) variantlar parametri vasitəsi ilə bir sıra mövcud qətnamələri xəritə qurucusuna ötürməkdir. Kimi bir şey.

          Maraqlandığınız qətnamələri əldə etməyin bir yolu ola bilər:

          1) xəritənizi istədiyiniz zoom səviyyəsinə yaxınlaşdırın (bunu map.zoomTo (x) işlədərək konsol vasitəsilə etdim, burada x maraqlandığım zoom səviyyəsidir)

          2) konsol vasitəsilə map.resolution daxil edin və qeyd edin

          3) daxil etmək istədiyiniz bütün zoom səviyyələri üçün təkrarlayın

          Daha ətraflı məlumatı burada tapa bilərsiniz.

          Arcgis desktop - Yeni xüsusiyyət yaratmaq üçün ModelBuilder -də iteratorlardan necə istifadə etmək olar?

          Mineral kirayə ilə bağlı torpaq sahələrinin qurulması prosesini avtomatlaşdırmaq üçün ModelBuilder -dən istifadə etməyə çalışıram.

          Mövcud kirayə xüsusiyyət sinifində həcm və səhifə kimi istinad sənədi məlumatları ilə əlaqədar məlumatlar var.

          Kirayə sənədi və arayış sənədinin həcmi və səhifəsi olan yeni icarələrə aid məlumatlarla dolu bir verilənlər bazasından istifadə edirəm.

          Planladığım yeni icarələrin bir çoxu artıq çəkilmiş çoxbucaqlılara aiddir və eyni əməl həcminə və səhifəyə aiddir.

          Etmək istədiyim şey, verilənlər bazamdakı VOLUME və PAGE atributlarına əsaslanaraq mövcud icarə xüsusiyyətləri sinifindən xüsusiyyətləri seçəcək, bu xüsusiyyəti ayrı bir xüsusiyyət sinifinə kopyalayıb yapışdıracaq (xüsusiyyətlərin yükləndiyi düzəliş qatını) icarə verilənlər bazası) və yeni kopyalanan xüsusiyyət sahələrini verilənlər bazamdakı icarə ID ilə doldurun.

          İnanıram ki, təkrarlanan sıra seçimi ən yaxşı ilk addım ola bilər, amma oradan hara gedəcəyimi bilmirəm.

          Çalışdığım ən mürəkkəb ModelBuilder layihəsidir, buna görə hər hansı bir məlumat və ya təklif böyük bir kömək olardı.

          Çözüm, uyğun bir axtarış aparmaq üçün kursor və lüğətdən istifadə edərək pythondur və nəticəni əlavə İcarə ID sahəsi ilə orijinal mineral kirayəsi ilə eyni xüsusiyyət tipinə və məlumat quruluşuna malik olan boş bir xüsusiyyət sinifinə daxil etmək üçün nəticəni çıxarın. masadan. Axtarış kodu bu şəkildə inanılmaz dərəcədə sürətlidir.

          Verilərinizə uyğunlaşdırılması lazım olan bəzi kodlar (iş sahəsi, giriş xüsusiyyət sinfi, əlaqəli cədvəl, çıxış xüsusiyyət sinfi və VOLUME, PAGE və LEASEID sahələrinin adları). Məlumatlarınızın bir-birindən çox əlaqəsi olduğunu düşündüm, burada bir çox bağlamalar eyni VOLUME və PAGE-ə sahib ola bilər və bir çox LeaseID-lər eyni VOLUME və PAGE-ə sahib ola bilər, beləliklə, aranızda daha sadə bir əlaqə ilə məşğul olsanız belə işləyəcək. iki məlumat mənbəyi. Çıxış masanızdan heç bir uyğun LeaseID olmayanlar da daxil olmaqla bütün Mineral Kirayə xüsusiyyətlərini özündə birləşdirəcək və bütün əlaqəli xüsusiyyətlər, hər əlaqəli LeaseID -i saxlamaq üçün lazım olduğu qədər çox xüsusiyyət yaratmaq üçün təkrarlanacaq.

          Uyğun olan bütün kirayə xüsusiyyətlərini tək bir xüsusiyyət sinifinə çıxarmaq istədiyinizi güman edirdim, amma həqiqətən hər bir Cild və Səhifə dəyərləri dəsti üçün ayrı bir xüsusiyyət sinifləri yaratmaq istəsəniz, bunu edə biləcəyim bəzi kiçik kod dəyişiklikləri ilə etmək olar. təmin etmək. İstəmirsinizsə, uyğun gələn LeaseID -lərin mövcud olmadığı Mineral Kirayə xüsusiyyətlərini aradan qaldırmaq üçün kodu asanlıqla dəyişdirə bilərəm.

          Bu kodu 100.000-dən çox xüsusiyyətə malik bir xüsusiyyət sinfi və 130.000-dən çox xüsusiyyətə malik bir çoxu ilə əlaqəli bir cədvəl istifadə edərək öz məlumatlarımda sınadım və istifadə etdiyim iki əlaqəli sahəyə uyğun gələn təxminən 2.074.000 xüsusiyyət istehsal etdi. Bu qədər çox funksiyanı yaratmaq üçün cəmi 12 dəqiqə 17 saniyə çəkildi (hər 3 saniyədə təxminən 10.000 xüsusiyyət). ModelBuilder iterator və təkrarlanan sorğuların istifadəsi eyni şeyi etmək üçün saatlar və ya günlər çəkərdi. Kodum, əlaqəli sahələrin indeksləşdirilməsini belə tələb etmir (lakin əvvəlcə əlaqəli sahələri indeksləmədən ModelBuilder -də yanaşmanızı etməyə cəsarət etmirsiniz). İki sahənin unikal dəyərləri bunun əvəzinə iki məlumat mənbəyi arasında Tək-Bir və ya Çox-Bir əlaqəsi ilə nəticələnsəydi, kod təxminən 2 dəqiqə ərzində bitərdi.

          Python 2.7 qrupundakı ArcGIS Proqram Qovluğundan Python Idle proqramını açın, Yeni Fayl açın və bu kodu yeni fayla yapışdırın, sonra sənədinizi istədiyiniz adla .py uzantısı ilə qeyd edin. Sonra məlumatlarınızı uyğunlaşdırmaq və kodu işə salmaq üçün girişləri və sahə adlarını dəyişdirin.


          20. ƏLAVƏ E: Xüsusi çap şablonu yazmaq

          Yeraltı səth dalış jurnallarını çap etmək üçün şablonları yaratmaq və ya dəyişdirmək üçün xüsusi çap vasitələri hazırlayır. HTML -də yazılmış şablonlar, eləcə də sadə Grantlee təlimat dəsti çap cihazına tərəfindən göstərilir Yeraltı səth.

          Şablonlara çap dialoqu vasitəsilə daxil oluruq (şəkilə baxın) B aşağıda).

          Altındakı düymələr Şablon açılan qutu sizə imkan verir Redaktə edin, Silin, İdxal etİxrac edin şablonlar (şəkilə baxın) A yuxarıda). Yeni və ya dəyişdirilmiş şablonlar işlənən dalış jurnalının eyni qovluğunda HTML faylları kimi saxlanılır. Şablon yaratmaq və ya dəyişdirmək üçün çap dialoqundakı şablon açılan siyahısından şablonlardan birini seçin (şəkilə baxın) B yuxarıda). İstədiyiniz son çapa bənzəyən mövcud bir şablon seçin. Sonra seçin Redaktə edin.

          Redaktə Panelində üç nişan var:

          1) The Stil nişan (şəkil A yuxarıda) dalış jurnalını çap etmək üçün istifadə olunan şriftə, sətir aralığına və rəng şablonuna nəzarət edir. Stil xüsusiyyətləri redaktə edilə bilər. Rəngli çap üçün istifadə olunan dörd rəng palitrasından birini seçin.

          2) Rənglər nişan (şəkil B yuxarıda) dalış jurnalını çap etmək üçün istifadə olunan rəngləri düzəltməyə imkan verir. Rənglər çox özelleştirilebilir: Redaktə edin düymələri Rənglər nişanı, dalış jurnalının müxtəlif komponentləri üçün ixtiyari rənglər seçməyə imkan verir.

          3) Şablon Düzenleme Panelinin sekmesi (aşağıdakı şəklə baxın) HTML istifadə edərək bir şablon və bir neçə Grantlee proqramlaşdırma primitivi yaratmağa imkan verir. Grantlee HTML kodunu olduqca sadə, lakin səmərəli şəkildə yarada və formatlaya bilər (aşağıya baxın). Şablonun HTML -si redaktə oluna və saxlanıla bilər. Saxlanan şablon işlənən dalışla eyni qovluqda saxlanılır. Varsayılan olaraq, a Fərdi şablon, xüsusi çap təlimatları olmayan bir skeletdir. Çap olunan məlumatların "& lt!-Şablon doldurulmalı-→" ilə işarələnmiş bölməni əvəz etməklə şablonda göstərilməsi və formatlanması lazımdır. HTML kodunu Grantlee təlimatları ilə yazmaq, nəyin çap olunacağını və hansı şəkildə göstərilməsini təyin etməkdə məhdudiyyətsiz azadlığa imkan verir.

          Mövcud şablonlardan hər hansı birini uyğunlaşdıra və dalış jurnalının qovluğuna saxlaya bilərsiniz. Standart şablonlar (məsələn, bir dalış, Altı dalış, Cədvəl) bu şəkildə dəyişdirilə bilər. Düzəlişləri tamamladıqdan sonra İxrac edin yeni bir şablon adı istifadə edərək yeni şablonu saxlamaq üçün çap informasiya qutusundakı düyməni basın.

          Xüsusi bir şablon yazmaq üçün, şablonun düzgün işlənməsini və işlənməsini təmin etmək üçün aşağıdakı elementlər mövcud olmalıdır.