@sholom ניסית לדמות סמארטפון בכלי המפתחים בדפדפן?

אביי
-
בדיקת אתר שלא עובד טוב בטלפון -
עבודה נכונה מול מסד נתונים ללקוחות נפרדים@avi-rz כתב בעבודה נכונה מול מסד נתונים ללקוחות נפרדים:
באמת כל אפליקציה שנותנת שירות אפי' בנסיון חינם, מייצרת מסד חדש ללקוח,
בעצם גוגל על כל תיבת מייל פותחת מסד נתונים, או trello ושאר ירקות גם?אני חושב שזה הדוגמה הכי חזקה למה ש@dovid כתב בהתחלה, גימייל הוא מוצר אחד שגוגל מספקת להרבה משתמשים, אז הגיוני שהכל יישב במסד אחד (ואני לא שולל שבחשבונות עסקיים זה לא משהו נפרד.. באופיס הענן של מיקרוסופט, ניתן לראות במוחש (בצורה שבה מאורגנים הדברים, בעיקר במסוף האדמין) שכל "ארגון" יושב בנפרד, ויש את הארגון הכללי שמיקרסופט מספקת בנפרד), משא"כ בנידון של פותח האשכול, ששם משמע שזה תוכנה שהוא מספק אותה כיחידה לכל לקוח, אבל חלק מהעניין זה שהוא מספק גם את השרתים וכו', ואז אין באמת סיבה לערב בין הדברים...
כעת קראתי שוב את מה שכתבתי למעלה, וראיתי שלא ציינתי שככה עשיתי בפרויקט אחד, אבל בשאר הפרויקטים, עשיתי פשוט מסד נתונים נפרד לכל משתמש/מופע.
לגבי עניין הגיבויים, אז אצלי יחד עם הפונקציות שיוצרות את מסד הנתונים והטבלאות, יש גם פונקציה שמבצעת גיבוי מלא של הdb, וכך כל מופע דואג לגיבוי של עצמו, ואני מנהל את השמירה שלהם בענן בדיוק כמו שהייתי מנהל שמירת גיבויים של db יחיד.
לגבי השידרוגים ושינויים בdb, התרגלתי שלא להריץ שאילתה ידנית, אלא יש לי פונקציה שבה אני מוסיף את השינויים, וככה זה מוגדר בקלות לכל הdb.
-
שאלה: איך יוצרים תוכנה שלא תזוהה כוירוס@pcinfogmach כמו ש@dovid כתב בדוטנט כמעט ולא נתקלתי בזה, כן נתקלתי בזה בקבצי פייתון שמהודרים לexe עם pyinstaller, שגוגל דרייב היה משדע אותי (ובעיקר את הנמענים)
אבל יש יהודי שפיתח תוכנה שמחתימה את התוכנה בשמך, שזה מנסיוני הקצר (יומיים) סותם לגוגל דרייב את הפה.
https://mitmachim.top/post/728160הורדה מכאן https://n.zelaze.ovh/s/gxkHDP2nFHtY65J/download/נחתום בטבעת המלך - מכון כתר תורה.exe
קוד נגדי מבקשים ממנו באימייל.
עריכה: רק כעת ראיתי שכבר @דאציג הביא לינק לתוכנה, @dovid לי התוכנה הזו פתרה את הבעיה של @pcinfogmach.
-
מיקום שמירת קבצי תוכנהבוקר טוב,
אני כותב כעת תוכנה כלשהי שקוראת וכותבת נתונים לdb של sqlite שמאוחסן במחשב,
העניין הוא שאת הקבצים של התוכנה עצמה אני מאחסן בProgram Files, וא"א לכתוב לשם בהפעלת התוכנה במצב רגיל (היינו לא כמנהל), וביותר שבסופו של דבר אני מעוניין לאפשר לתוכנה לעבוד אצל כל המשתמשים עם אותו דאטה, האם יש מיקום כלשהו שמקובל לאחסן בו את קבצי נתונים של התוכנה שמתאים לצורך הזה? (ניסיתי בפרוגרם דאטה אבל מסתבר שרק המשתמש שיצר את הקובץ מקבל הרשאת כתיבה)
-
טעינה איטית של נתונים לSfDataGrid של syncfusion בwpfעדכון.
לאחר שפניתי לתמיכה של syncfusion והוברר שאין כל בעיה בקוד וכו', הם זרקו לי משפט שאולי עשיתי התאמות אישיות כלשהם, ולאחר בדיקה התברר שהשורה הזו בapp.xaml היא זו שדפקה את העסק:
<ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="Views/Styles/Scrollbar.xaml" /> </ResourceDictionary.MergedDictionaries>
זה קוד שמצאתי ברשת לעיצוב פס הגלילה, רציתי להצר אותו כי הוא תפס לי מקום באחד הטפסים..
אני לא כ"כ מבין בxaml כך שאיני יודע להצביע על הבעיה עצמה
Scrollbar.xaml<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <SolidColorBrush x:Key="StandardBorderBrush" Color="#888" /> <SolidColorBrush x:Key="StandardBackgroundBrush" Color="Black" /> <SolidColorBrush x:Key="HoverBorderBrush" Color="#DDD" /> <SolidColorBrush x:Key="SelectedBackgroundBrush" Color="Gray" /> <SolidColorBrush x:Key="SelectedForegroundBrush" Color="White" /> <SolidColorBrush x:Key="DisabledForegroundBrush" Color="#888" /> <SolidColorBrush x:Key="GlyphBrush" Color="#444" /> <SolidColorBrush x:Key="NormalBrush" Color="#888" /> <SolidColorBrush x:Key="NormalBorderBrush" Color="#888" /> <SolidColorBrush x:Key="HorizontalNormalBrush" Color="#FF070AC8" /> <SolidColorBrush x:Key="HorizontalNormalBorderBrush" Color="#888" /> <Style x:Key="ScrollBarLineButton" TargetType="{x:Type RepeatButton}"> <Setter Property="Visibility" Value="Hidden" /> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="OverridesDefaultStyle" Value="true" /> <Setter Property="Focusable" Value="false" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type RepeatButton}"> <Border Name="Border" Margin="1" CornerRadius="2" Background="{StaticResource NormalBrush}" BorderBrush="{StaticResource NormalBorderBrush}" BorderThickness="1"> <Path HorizontalAlignment="Center" VerticalAlignment="Center" Fill="{StaticResource GlyphBrush}" Data="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}" /> </Border> <ControlTemplate.Triggers> <Trigger Property="IsPressed" Value="true"> <Setter TargetName="Border" Property="Background" Value="{StaticResource PressedBrush}" /> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="ScrollBarPageButton" TargetType="{x:Type RepeatButton}"> <Setter Property="Visibility" Value="Hidden" /> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="OverridesDefaultStyle" Value="true" /> <Setter Property="IsTabStop" Value="false" /> <Setter Property="Focusable" Value="false" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type RepeatButton}"> <Border Background="Black" /> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}"> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="OverridesDefaultStyle" Value="true" /> <Setter Property="IsTabStop" Value="false" /> <Setter Property="Focusable" Value="false" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Thumb}"> <Border CornerRadius="4" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0" Width="8" Margin="8,0,-2,0" /> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="ScrollBarThumbHor" TargetType="{x:Type Thumb}"> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="OverridesDefaultStyle" Value="true" /> <Setter Property="IsTabStop" Value="false" /> <Setter Property="Focusable" Value="false" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Thumb}"> <Border CornerRadius="4" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0" Height="8" Margin="0,0,-2,0" /> </ControlTemplate> </Setter.Value> </Setter> </Style> <ControlTemplate x:Key="VerticalScrollBar" TargetType="{x:Type ScrollBar}"> <Grid> <Grid.RowDefinitions> <RowDefinition MaxHeight="0" /> <RowDefinition Height="0.00001*" /> <RowDefinition MaxHeight="0" /> </Grid.RowDefinitions> <Border Grid.RowSpan="3" CornerRadius="2" Background="Transparent" /> <RepeatButton Grid.Row="0" Style="{StaticResource ScrollBarLineButton}" Height="18" Command="ScrollBar.LineUpCommand" Content="M 0 4 L 8 4 L 4 0 Z" /> <Track Name="PART_Track" Grid.Row="1" IsDirectionReversed="true"> <Track.DecreaseRepeatButton> <RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageUpCommand" /> </Track.DecreaseRepeatButton> <Track.Thumb> <Thumb Style="{StaticResource ScrollBarThumb}" Margin="1,0,1,0" Background="{StaticResource HorizontalNormalBrush}" BorderBrush="{StaticResource HorizontalNormalBorderBrush}" /> </Track.Thumb> <Track.IncreaseRepeatButton> <RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageDownCommand" /> </Track.IncreaseRepeatButton> </Track> <RepeatButton Grid.Row="3" Style="{StaticResource ScrollBarLineButton}" Height="18" Command="ScrollBar.LineDownCommand" Content="M 0 0 L 4 4 L 8 0 Z" /> </Grid> </ControlTemplate> <ControlTemplate x:Key="HorizontalScrollBar" TargetType="{x:Type ScrollBar}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="0" /> <ColumnDefinition Width="0.00001*" /> <ColumnDefinition Width="0" /> </Grid.ColumnDefinitions> <Border Grid.ColumnSpan="3" CornerRadius="3" Background="Transparent" /> <RepeatButton Grid.Column="0" Style="{StaticResource ScrollBarLineButton}" Width="18" Command="ScrollBar.LineLeftCommand" Content="M 4 0 L 4 8 L 0 4 Z" /> <Track Name="PART_Track" Grid.Column="1" IsDirectionReversed="False"> <Track.DecreaseRepeatButton> <RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageLeftCommand" /> </Track.DecreaseRepeatButton> <Track.Thumb> <Thumb Style="{StaticResource ScrollBarThumbHor}" Margin="0,1,0,1" Background="{StaticResource HorizontalNormalBrush}" BorderBrush="{StaticResource HorizontalNormalBorderBrush}" /> </Track.Thumb> <Track.IncreaseRepeatButton> <RepeatButton Style="{StaticResource ScrollBarPageButton}" Command="ScrollBar.PageRightCommand" /> </Track.IncreaseRepeatButton> </Track> <RepeatButton Grid.Column="3" Style="{StaticResource ScrollBarLineButton}" Width="18" Command="ScrollBar.LineRightCommand" Content="M 0 0 L 4 4 L 0 8 Z" /> </Grid> </ControlTemplate> <Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}"> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="OverridesDefaultStyle" Value="true" /> <Style.Triggers> <Trigger Property="Orientation" Value="Horizontal"> <Setter Property="Width" Value="Auto" /> <Setter Property="Height" Value="12" /> <Setter Property="Template" Value="{StaticResource HorizontalScrollBar}" /> </Trigger> <Trigger Property="Orientation" Value="Vertical"> <Setter Property="Width" Value="18" /> <Setter Property="Height" Value="Auto" /> <Setter Property="Template" Value="{StaticResource VerticalScrollBar}" /> </Trigger> </Style.Triggers> </Style> <Style x:Key="FavsScrollViewer" TargetType="{x:Type ScrollViewer}"> <Setter Property="OverridesDefaultStyle" Value="True" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ScrollViewer}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <ScrollContentPresenter Grid.Column="1" /> <ScrollBar Name="PART_VerticalScrollBar" Value="{TemplateBinding VerticalOffset}" Maximum="{TemplateBinding ScrollableHeight}" ViewportSize="{TemplateBinding ViewportHeight}" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" /> <ScrollBar Name="PART_HorizontalScrollBar" Orientation="Horizontal" Grid.Row="1" Grid.Column="1" Value="{TemplateBinding HorizontalOffset}" Maximum="{TemplateBinding ScrollableWidth}" ViewportSize="{TemplateBinding ViewportWidth}" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" /> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style TargetType="{x:Type ScrollViewer}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ScrollViewer}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <ScrollContentPresenter Grid.Column="0" /> <ScrollBar x:Name="PART_VerticalScrollBar" Grid.Row="0" Grid.Column="1" Value="{TemplateBinding VerticalOffset}" Maximum="{TemplateBinding ScrollableHeight}" ViewportSize="{TemplateBinding ViewportHeight}" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" /> <ScrollBar x:Name="PART_HorizontalScrollBar" Orientation="Horizontal" Grid.Row="1" Grid.Column="0" Value="{TemplateBinding HorizontalOffset}" Maximum="{TemplateBinding ScrollableWidth}" ViewportSize="{TemplateBinding ViewportWidth}" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" /> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> </ResourceDictionary>
-
עזרה במציאת ספריה/framework לעיצוב גרפי (gui) ב python@Mordechay יש לך את האתר הזה ל לtkinter
https://visualtk.com/ובלינק הזה שהבאתי למעלה, יש תוכנה לעיצוב עובר qt
https://build-system.fman.io/qt-designer-downloadהאמת שיש גם את זה, מעצב עם figma (לא ניסיתי)
https://github.com/ParthJadhav/Tkinter-Designer -
בעיה בRetrofit באנדרואיד (kotlin)@אביי כתב בבעיה בRetrofit באנדרואיד (kotlin):
ניסיתי גם לשנות את הtype של הCall אבל אז הכל השתגע כבר בהידור
הפיתרון אכן היה לשנות את הטייפ לטייפ כללי ולהוסיף מחלקת נתונים שתטפל בהמרה לפני שהיא חוזרת אלי (היינו למשתנה שמכיל את התשובה שמוחזרת)
data class ServerResponse( val status: Boolean, val statusAction: String, val token: String, val user: String, val name: String, val message: String, val lastEntry: String, val sumMoney: String )
הטעות של היתה בצורת הקריאה למחלקה במקרה הזה, שצריכה להיות ככה
Call<Response<ServerResponse>>
-
C# | העלאת קובץ גדול מ50 מגה בAPI לימות המשיח בחלקים@ivrtikshoret אכן זה היה הבעיה!
לא שמתי לב לזה לפני זה בשרשור המקורי..
עדכנתי את הקוד למעלה לקוד התקין, אם יש מישהו שצריך...
-
בעיה בהרצה בויזואל סטודיו בגלל מספר זהות שמתחיל ב- 0.@Sara-Rivka יכול להיות שאיפשהו באמצע ה0 נעלם, וממילא התוכנה לא מקבלת את מספר הזהות באופן תקין?
תנסו לבדוק לפני ביצוע היציאה מהו הערך של משתנה תעודת הזהות.. -
איך לומדים לבנות תוכנה@משתמש-תמים כתב באיך לומדים לבנות תוכנה:
אם אתה לא רוצה לדפוק לעצמך את המחשב
אגב, אני אוהב להשתמש בגלל זה ב Windows Sandbox (זמין בגרסאות הפרו החל מwin10 גרסה 1809 אולי?) זה מעלה מחשב וירטואלי ממש בקלות תוך כמה שניות שבסגירה הוא מתאפס, ניתן להעתיק ממנו ואליו קבצים כמו שמעתיקים בRDP (העתק הדבק).
הוא חמוד שאם אני יפעיל פקודה שמכבה את המחשב, הוא פשוט ייסגר
והוא ממש אחד על אחד. (אני יש לי בשולחן העבודה כבר תיקיה עם מתקין של כרום, ותעודות של נטפרי עם סקריפט להגדרה מהירה)
-
GPT-4 כישוריו בהמצאת תשובות@nigun כתב בGPT-4 כישוריו בהמצאת תשובות:
ואין הרבה טקסט באינטרנט שמסביר שלחתול יש 4 רגליים
עכשיו יש
@one1010 רק אני לא הבנתי מה הקשר בין זה שלחתול יש 4 רגליים למרובע?
@mekev אני לא אומר שהוא לא מועיל יותר מגוגל בהרבה מאוד פעמים, זה די ברור שזה העתיד של החיפוש ברשת.
אישית אני מעלה לו פעמים תיאור מפורט של בעיה שאני נתקל בה ומתקשה בה ובד"כ הפתרונות שהוא מציע הם הגיוניים, הבעיה היא, שכשהוא מבלבל במוח אז הוא עושה את זה עד הסוף..
-
קבלת רשימת אנשי קשר לפי תווית בגוגל סקריפט@hp079 בטח, לא יודע למה סתם סיבכתי מקודם..
function getContactsForGroup() { let name = `a` let people = People.ContactGroups.list(); let groupName = people['contactGroups'].find((group) => group['name'] === name); let resourceName = groupName.resourceName; let idGroup = resourceName.split('/').pop(); let group = People.ContactGroups.get(`contactGroups/${idGroup}`, { maxMembers: 200 }); Logger.log("group: " + group); let group_contacts = People.People.getBatchGet({ resourceNames: group.memberResourceNames, personFields: "emailAddresses" }); let emails = group_contacts.responses.map(x => { let emailObjects = x.person.emailAddresses; if (emailObjects != null) { return emailObjects.map(eo => eo.value); } }); Logger.log(emails) }
את a בשורה 2 עליך להחליף בשם התווית.
-
קבלת רשימת אנשי קשר לפי תווית בגוגל סקריפט@hp079 גם אני הסתבכתי עם זה בהתחלה, בעיקרון הבעיה היא שלא הבנתי שלא צריך את השם של התווית אלא את האיידי שלה (תוכל לראות את זה ע"י כניסה לתווית באתר של גוגל אנשי קשר בסוף הURL)
https://contacts.google.com/label/d77a5870934c44v?hl=iw
d77a5870934c44v
הקוד הזה מדפיס מערך של כתובות המייל של אנשי הקשר שבתווית שצוינה
function getContactsForGroup() { let idGroup = `d77a53456910c44b`; let group = People.ContactGroups.get(`contactGroups/${idGroup}`, { maxMembers: 200 }); Logger.log("group: " + group); let group_contacts = People.People.getBatchGet({ resourceNames: group.memberResourceNames, personFields: "emailAddresses" }); let emails = group_contacts.responses.map(x => { let emailObjects = x.person.emailAddresses; if (emailObjects != null) { return emailObjects.map(eo => eo.value); } }); Logger.log(emails); }
שים לב ל
maxMembers
בשורה הרביעית שמגדיר כמה אנשי קשר להחזיר. -
פריסת סקריפט בגוגל סקריפט כאפליקציית אינטרנט דרך סקריפט אחר@מיכאלוש בגדול זה אמור להיות ככה:
function sendRequest() { let apiKey = `YOUR_API_KEY`; let accessToken = `YOUR_ACCESS_TOKEN`; var url = `https://script.googleapis.com/v1/projects/scriptId/deployments?key=${apiKey}`; var payload = { "description": "description", "manifestFileName": "manifestFileName", "scriptId": "scriptId", "versionNumber": 0 }; var options = { "method": "post", "headers": { "Authorization": "Bearer " + accessToken, "Accept": "application/json", "Content-Type": "application/json" }, "payload": JSON.stringify(payload) }; var response = UrlFetchApp.fetch(url, options); Logger.log(response.getContentText()); }
apiKey = מפתח API של גוגל קלאוד
accessToken = אישור OAuth להרשאות היישום.פרטים על היקפי ההרשאות https://developers.google.com/identity/protocols/oauth2/scopes
תצטרך חשבון כאן (חינמי, דורש פרטי אשראי)
https://console.cloud.google.com/welcomeבעיקרון יש לגוגל מאמרי עזרה הדרכות ודוגמאות (בעיקר באנגלית) מפורטים על כל שלב ושלב, רק שלפעמים מרוב מאמרים קצת הולכים לאיבוד...
בשביל ההתחלה קח את העיקרון, בכל מוצר/שירות יש את המאמר של "מתחילים" או משהו דומה, שמה כתובים המושגים החדשים והישנים שצריך להכיר בשביל להבין את התיעוד, זה המסמך שהכי חשוב לקרוא כל השאר - לפי הצורך.
אח"כ ניתן להגיע להכל דרך חיפוש גוגל או שורת החיפוש של גוגל דאב עצמו..
-
פריסת סקריפט בגוגל סקריפט כאפליקציית אינטרנט דרך סקריפט אחר@מיכאלוש חוששני שפשוט דילגת על תחילת העמוד..
המתודה הראשונה היא create
https://developers.google.com/apps-script/api/reference/rest/v1/projects.deployments/create?hl=he -
SMS למייל?@ivrtikshoret פנה באישי
-
הרצת סקריפט PHP כל 10 דקות בשעות וימים מסוימים@0795696035 אני הייתי מנסה להשתמש בגוגל סקריפט עם התניית שעות ושבת באמצעות גוגל שיטס.
-
האם יש חיסרון בWebSocket? -
פלאפון שיאומי כשר?!!@מעמד אמר בפלאפון שיאומי כשר?!!:
@אביי אמר בפלאפון שיאומי כשר?!!:
ואגב, כתבתי למעלה שלדעתי אחד מהם לפחות הינו חבר הפורום, שהתייעץ על כך בעבר.
אכן לזה הייתה כוונתי. @שלומ יש קשר?