Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Резюме для программиста

uscheswoi_82 старожил26.01.22 02:11
NEW 26.01.22 02:11 
в ответ 7495 25.01.22 02:40

Это моё портфолио, т.к. в github не хочу код выставлять, а в SF проект ещё сырой.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
uscheswoi_82 старожил26.01.22 02:16
NEW 26.01.22 02:16 
в ответ AlexNek 25.01.22 12:57
не понял.

Я не хочу использовать EF и LINQ, а хочу использовать OleDb https://docs.microsoft.com/ru-ru/dotnet/api/system.data.oledb?view=dotnet-plat-ext-6.0 и передать во вьёшку OleDb чтобы во вьюшки спомощью foreach отобразить. Вот нашёл какой-то код см. https://www.aspsnippets.com/Articles/Upload-Read-and-Display-Excel-file-data-using-OLEDB-in-ASPNet-MVC.aspx но он какой-то огромный, с EF компактнее, но я не люблю EF.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
AlexNek патриот26.01.22 17:47
AlexNek
NEW 26.01.22 17:47 
в ответ uscheswoi_82 26.01.22 02:16
и передать во вьёшку OleDb

никогда не смешивайте слой отображения со слоем данных.

Вьюшка должна быть предельно тупая - дали данные и отображай. иначе говоря вьюшке уже должен поступать массив с данными или он может запрашиваться динамически, если данных очень много.

Но в любом случае через прокладку типа IDataStorage.

Если таблиц в базе меньше 10, то берите https://www.devart.com/entitydeveloper/ Linq To SQL

Пару кнопочек нажать и будет готовый код, совершенно бесплатно на любую базу без EF.

7495 знакомое лицо26.01.22 18:00
7495
NEW 26.01.22 18:00 
в ответ uscheswoi_82 26.01.22 02:11
Это моё портфолио, т.к. в github не хочу код выставлять, а в SF проект ещё сырой.


А "почемучка" кто такая? Почему она пишет, ей можно, это твоя девушка?


Давай открывай чтоб мы все могли там писать, у меня есть задачка на питоне.

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
uscheswoi_82 старожил27.01.22 04:12
NEW 27.01.22 04:12 
в ответ AlexNek 26.01.22 17:47
никогда не смешивайте слой отображения со слоем данных.

Я не смешиваю. Я посмотрел код, там не так уж и сложно. В том примере что я дал, программа сначало читает спомощью OleDB Excel файл, а потом программа зафигачивает данные в коллекцию и передаёт вьюшке эту коллекцию, во вьюшке спомощью foreach отображает данные. Эта такая глупость, потому-что у MS-SQL нет как в MySQL LIMIT и OFFSET см. https://www.mysqltutorial.org/mysql-limit.aspx, в классическом (WebForm) ASP NET там в сетку можно в сетку добавить Pager см. https://www.c-sharpcorner.com/UploadFile/rohatash/gridview-paging-sample-in-Asp-Net/, который сам будет управлять. В PHP я пишу так 1 страница - "SELECT * FROM Persone LIMIT 0, 10", 2 страница - "SELECT * FROM Persone LIMIT 11, 21", итд. Я не могу передать много данных во Viewшку, сейчас все кто может ограничивается 10-20 строчками, чтобы не загружать сервер. Хотя нет что-то нашёл - https://stackoverflow.com/questions/2135418/equivalent-of-limit-and-offset-for-sql-server, Просто в классическом WebForm ASP NET сетка без моего участия управляет СУБД и отображает данные как надо.


Вот пример моего проекта по недвижимости, там сетка всё делает за меня:

Default.aspx:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" 
CodeFile="Default.aspx.cs" Inherits="_Default" Title="Immobilien, Wohnungen, Häuser" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
    <div style="border:1px solid #EEEEEE; -moz-border-radius: 5px; border-radius:5px; padding:5px 5px 5px 5px;">
        <label>Wo?</label><br />
        <asp:TextBox ID="txtWhere" runat="server" CssClass="form-control" Width="150px"></asp:TextBox><br />
        <br />
        <label>Preis bis</label><br />
        <asp:TextBox ID="txtPrice" runat="server" CssClass="form-control" Text="2000" Width="150px"></asp:TextBox><br />
        <br />
        <label>Zimmer ab</label><br />
        <asp:TextBox ID="txtRooms" runat="server" CssClass="form-control" Text="0" Width="150px"></asp:TextBox><br />
        <br />
        <label>Wohnfläche ab</label><br />
        <asp:TextBox ID="txtSquare" runat="server" CssClass="form-control" Text="0" Width="150px"></asp:TextBox><br /><br />
        <asp:Button ID="btnSearch" runat="server" Text="Suchen" CssClass="btn btn-primary" 
            onclick="btnSearch_Click" />
    </div>
    <br />
    <asp:ListView ID="lvMain" runat="server" ItemPlaceholderID="PlaceHolder1">
        <LayoutTemplate>
            <hr />
            <table width="50%" class="table table-striped">
                <thead>
                    <tr>
                        <th>Stadt</th>
                        <th>Preis</th>
                        <th>Anz.Zimmer</th>
                        <th>Wohnfläche</th>
                    </tr>
                </thead>
                <tbody>
                   <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
               </tbody>
            </table>    
        </LayoutTemplate>
        <ItemTemplate>
            <tr>
                <td><a href="Details.aspx?id=<%# Eval("InseratID") %>"><%# Eval("StadtBez") %></a></td>
                <td><%# Eval("Preis", "{0:c}") %></td>
                <td><%# Eval("AnzZimmer") %></td>
                <td><%# Eval("Groesse") %></td>
            </tr>    
        </ItemTemplate>
    </asp:ListView>
    <br />
    <br />
    <!-- ПАГИНАТОР НАЧАЛО -->
    <asp:DataPager ID="dpMain" runat="server" PagedControlID="lvMain" PageSize="10">
        <Fields>
            <asp:NextPreviousPagerField />
            <asp:NumericPagerField />
        </Fields>
    </asp:DataPager>    
    <!-- ПАГИНАТОР КОНЕЦ -->
</asp:Content>


Default.aspx.cs:


using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OleDb;
public partial class _Default : System.Web.UI.Page {
  protected void Page_Load(object sender, EventArgs e) { }
  protected void btnSearch_Click(object sender, EventArgs e) {
  try {
    DataTable dt = new DataTable();
    OleDbConnection con = new OleDbConnection(ConfigurationManager.ConnectionStrings["default"].ConnectionString);
    con.Open();
    OleDbDataAdapter da = new OleDbDataAdapter("SELECT i.InseratID, i.PLZ, s.Bezeichnung AS StadtBez, i.Etage, i.AnzZimmer, i.Preis, i.Groesse " + 
    "FROM Inserat AS i INNER JOIN Stadt AS s ON i.StadtID = s.StadtID WHERE s.Bezeichnung LIKE '%" + this.txtWhere.Text + "%'" + 
    "AND i.Preis <= " + this.txtPrice.Text + " AND i.AnzZimmer >= " + this.txtRooms.Text + " AND i.Groesse >= " + this.txtSquare.Text, con);
    da.Fill(dt);
    lvMain.DataSource = dt; // Всё за меня делает сетка и пагинатор!!!
    lvMain.DataBind(); // Всё за меня делает сетка и пагинатор!!!
  }
  catch (Exception ex) { }
  }
}


Web.config:

<connectionStrings>
  <add name="default" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|immobilien.mdb;"/>
</connectionStrings>
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
Murr патриот27.01.22 05:19
Murr
NEW 27.01.22 05:19 
в ответ uscheswoi_82 27.01.22 04:12

потому-что у MS-SQL нет

-----

В армии в таких случаях говорят - учи мат.часть.

https://www.sqlshack.com/pagination-in-sql-server/

Отдельно отмечу, что описанное по приведенному линку может не работать через OLEDB.


Всё за меня делает сетка и пагинатор!!!

-----

Во первых - не все, во вторых - не там.

Чтобы понять разницу сделай "широкую" с длинной записи в десяток-другой килобайт и "толстую" с миллионом выбираемых записей табличку и погоняй свой код на сетке в 10 мбод...


можно в сетку добавить Pager

-----

Так же можно запустить sql-profiler и посмотреть сколько и каких запросов придет на sql-сервер.


сетка без моего участия управляет СУБД

------

Не хочу тебя огорчать, но...

сетка работает с объектом DataTable, который "не знает" как именно в нем появились данные - можно из базы, можно хардкодить или читать из файла/потока...

Там, в принципе, двумерный массив и немного обвязки... так что ни к какой СУБД ни сетка, ни пагинатор не лезут...

Ты, кстати, в курсе, что DataSource это не обязательно DataTable? Там вроде даже просто IList проходит...

uscheswoi_82 старожил27.01.22 06:36
NEW 27.01.22 06:36 
в ответ Murr 27.01.22 05:19, Последний раз изменено 27.01.22 06:40 (uscheswoi_82)

Так я выше давал ссылку в MS SQL 2012 добавил, дублирую см. https://stackoverflow.com/questions/2135418/equivalent-of-limit-and-offset-for-sql-server

SELECT email FROM emailTable 
WHERE user_id=3
ORDER BY Id
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;    

Это устаревший метод, сейчас так никто не делает. Сейчас используют ленивую загрузку (Lazy Load), т.е. генерируют JSON, и на JavaScript на клиенте парзят JSON, и добавляют куда надо эти данные. У меня есть проект, там в основном всё собирается через AJAX, и рендериться на JavaScript на клиенте, и сервер особо не напрягается. Т.е. если я делал бы на ASP NET, то я бы сделал так бы:

<!DOCTYPE html>
<html>
  <head>
    <title>Fetch Demo</title>
    <script> 
      const file = 'get.aspx';
      window.onload = () => {
        fetch(file).then(response => response.json()).then(data => { 
          let str = '<table border="0"><tr><th>Description</th><th>Price</th></tr>';
          data.forEach(obj => {
            str += '<tr>';
            Object.entries(obj).forEach(([key, value]) => {
              if(key == 'description') {
                str +=`<td>${value}</td>`;
              }
              else if(key == 'price') {
                str +=`<td>${value}€</td>`;
            }
        }); 
            str += '</tr>';
        });
        document.getElementById('items').innerHTML = str + '</table>';
        }).catch(error => console.log(error));
      }
    </script>
  </head>
  <body>
    <div id="items"></div>
  </body>
</html>
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
Murr патриот27.01.22 13:10
Murr
NEW 27.01.22 13:10 
в ответ uscheswoi_82 27.01.22 06:36

сейчас так никто не делает

------

Между "никто не делает" и заявленном "отсутствует в MS SQL" есть некоторая разница.


Сейчас используют

------

Да-да... в детских поделках - несомненно.

При более/менее серьезной нагрузке и объемах все будет выглядеть сильно по-другому.

Ну а если там один-два клиента в сутки - можно все что угодно лепить...

Когда протестируешь предложенный ранее вариант - сможешь понять что, где и как.


.


alex445 коренной житель27.01.22 15:08
NEW 27.01.22 15:08 
в ответ alex445 28.07.21 11:52, Последний раз изменено 27.01.22 15:16 (alex445)

Кто-то тут про Юнити спрашивал. Вот, первый блин в скульптуре Blender. Два часа по мануалам, из которых 90% времени выяснял, что как работает.

Потом импорт в Юнити. Мышой конечно не очень удобно - лучше планшет и перо.

А некоторые не заморачиваются и этим - лепят реальный объект из глины и потом трёхмерно сканируют его.


Голова будущей статуи богини. Главное, не уснуть, оставив комп включенным, а потом посреди ночи не проснуться и не увидеть ЭТО на весь экран.

Срисовывл с неё. Вроде, у меня даже лучше оригинала получилось.


AlexNek патриот27.01.22 17:58
AlexNek
NEW 27.01.22 17:58 
в ответ uscheswoi_82 27.01.22 04:12
Я не смешиваю.

"и передать во вьёшку OleDb" - Как то мне сложно понять это по другому. смущ


в классическом (WebForm) ASP NET

Можно еще фортран с коболом вспомнить смущ

uscheswoi_82 старожил27.01.22 21:30
NEW 27.01.22 21:30 
в ответ alex445 27.01.22 15:08
Голова будущей статуи богини. Главное, не уснуть, оставив комп включенным, а потом посреди ночи не проснуться и не увидеть ЭТО на весь экран.Срисовывл с неё. Вроде, у меня даже лучше оригинала получилось.

Алекс поставьте MakeHuman и не партись с 3D моделями персонажа.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
uscheswoi_82 старожил27.01.22 21:38
NEW 27.01.22 21:38 
в ответ AlexNek 27.01.22 17:58
Можно еще фортран с коболом вспомнить смущ

Мне кажется что WebForms они не уберут, как только это уберут народ перейдёт на PHP или на DJango.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
Срыв покровов патриот27.01.22 22:08
NEW 27.01.22 22:08 
в ответ uscheswoi_82 27.01.22 21:38

кто хотел уйти с WebForms - давно ушли

и на PHP в том числе. Самые упоротые.

alex445 коренной житель27.01.22 22:52
NEW 27.01.22 22:52 
в ответ uscheswoi_82 27.01.22 21:30, Последний раз изменено 27.01.22 22:56 (alex445)
Алекс поставьте MakeHuman и не партись с 3D моделями персонажа.

Спасибо за ссылку.

Это, как я понял, просто продвинутый конфигуратор по сути готовых моделек. В игры уже давно такие встраивают, только упрощённые.

Мне всё равно такие крутые не нужны - нужно low poly:



High poly нужно только для скульптуры. Когда всё сделал, редуцируешь poly count раз в 100, и тогда эскпортируешь из Блендера в Юнити.


Да в принципе тоже уже давно есть утилиты для быстрого создания чего угодно - людей, растительности, пересечённой местности, городов. Времена, когда моделлер каждую кочку руками вытягивал и каждый кустик сам "садил" давно прошли. Вручную делаются лишь детали и какие-то особенные вещи.


Непонятно, почему люди до сих пор в GUI руками контролы прописывают. Давно должно быть - бросил модельку на форму, она сама все поля и лейблы соорудила, а ты только пару команд привязал и пододвинул чуть-чуть что-то по мелочи. Даже тулзы такие видел и использовал. Там обычно проблемы с какими-то не очень стандартными данными, типа изображений. А с текстовыми и числовыми полями всё нормально генерится.

alex445 коренной житель28.01.22 12:23
NEW 28.01.22 12:23 
в ответ alex445 27.01.22 22:52, Последний раз изменено 28.01.22 12:26 (alex445)

А в это время в Германии считают, что 100к+ это только для суперстар.

А ещё, как говорят, с этих сумм почти не платятся налоги. Тут и американцы "соснут". ))


И как будто этого мало, ещё комменты иногда типа

"Немного заниженные данные, как по мне."

Срыв покровов патриот28.01.22 15:12
NEW 28.01.22 15:12 
в ответ alex445 28.01.22 12:23

про налоги можно поподробнее?

Hryu старожил28.01.22 16:05
28.01.22 16:05 
в ответ alex445 28.01.22 12:23
А ещё, как говорят, с этих сумм почти не платятся налоги. Тут и американцы "соснут". ))

Рассказывай, а то мы тут чёта пропустили.🍟

alex445 коренной житель28.01.22 16:14
NEW 28.01.22 16:14 
в ответ Срыв покровов 28.01.22 15:12, Последний раз изменено 28.01.22 16:14 (alex445)
про налоги можно поподробнее?

Ну они там говорят, что типа почти все оформлены как самозанятые и индивидуальные предприниматели.

А у них 5% всего. Я говорю "почти" не платятся - читать "значительно меньше, чем...".

MrSanders коренной житель28.01.22 16:43
NEW 28.01.22 16:43 
в ответ alex445 28.01.22 16:14
Ну они там говорят, что типа почти все оформлены как самозанятые и индивидуальные предприниматели.

А у них 5% всего. Я говорю "почти" не платятся - читать "значительно меньше, чем...".

Сначала хотел написать что стоит с немецкими "самозанятыми" сравнивать... А потом подумал что не стоит. Дорогой alex445, срочно, пока все места не расхватали - бросайте всё и на Украину! Вас там ждут!

Срыв покровов патриот28.01.22 23:55
NEW 28.01.22 23:55 
в ответ MrSanders 28.01.22 16:43

было б что бросать))